-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathFunctions.cpp
127 lines (112 loc) · 2.78 KB
/
Functions.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include "Functions.h"
void WriteText(SDL_Surface* Surface,TTF_Font* FontIn,char* Tekst,int NrOfChars,int X,int Y,int YSpacing,SDL_Color ColorIn)
{
char List[100][255];
int Lines,Teller,Chars;
SDL_Rect DstRect;
SDL_Surface* TmpSurface1;
Lines = 0;
Chars = 0;
for (Teller=0;Teller<NrOfChars;Teller++)
{
if(Lines > 100)
break;
if((Tekst[Teller] == '\n') || (Chars==255))
{
List[Lines][Chars]='\0';
Lines++;
Chars = 0;
}
else
{
List[Lines][Chars]=Tekst[Teller];
Chars++;
}
}
List[Lines][Chars] = '\0';
for (Teller=0;Teller <= Lines;Teller++)
{
if(strlen(List[Teller]) > 0)
{
TmpSurface1 = TTF_RenderText_Blended(FontIn,List[Teller],ColorIn);
DstRect.x = X;
DstRect.y = Y + (Teller) * TTF_FontLineSkip(FontIn) + (Teller*YSpacing);
DstRect.w = TmpSurface1->w;
DstRect.h = TmpSurface1->h;
SDL_BlitSurface(TmpSurface1,NULL,Surface,&DstRect);
SDL_FreeSurface(TmpSurface1);
}
}
}
bool FileExists(char * FileName)
{
FILE *Fp;
Fp = fopen(FileName,"rb");
if (Fp)
{
fclose(Fp);
return true;
}
else
return false;
}
SDL_Surface* ScaleSurface(SDL_Surface* Surface,int ScaleFactor)
{
int X=0,Y=0,Xi=0,Yi=0,X2=0,Y2=0;
SDL_Surface *Tmp;
Tmp = SDL_CreateRGBSurface(SDL_SWSURFACE,Surface->w * ScaleFactor,Surface->h * ScaleFactor,Surface->format->BitsPerPixel,Surface->format->Rmask,Surface->format->Gmask,Surface->format->Bmask,Surface->format->Amask);
if(ScaleFactor == 1)
{
SDL_BlitSurface(Surface,NULL,Tmp,NULL);
}
else
{
SDL_LockSurface(Surface);
SDL_LockSurface(Tmp);
for(Y=0;Y<Surface->h;Y++)
{
//printf("scale1\n");
for(X=0;X<Surface->w;X++)
{
//copy single pixel
for(Xi = 0;Xi<ScaleFactor;Xi++)
{
memcpy((pixel *)Tmp->pixels +(Y2)*Tmp->pitch/SCREEN_BYTE + X2,(pixel *)Surface->pixels + (Y)*Surface->pitch/SCREEN_BYTE+X,SCREEN_BYTE);
X2++;
}
}
X2 = 0;
//copy previous line
for (Yi=1;Yi<ScaleFactor;Yi++)
{
memcpy((pixel *)Tmp->pixels + (Y2+Yi)*Tmp->pitch/SCREEN_BYTE,(pixel *)Tmp->pixels+(Y2)*Tmp->pitch/SCREEN_BYTE,Tmp->w*SCREEN_BYTE);
}
Y2+=ScaleFactor;
}
SDL_UnlockSurface(Tmp);
SDL_UnlockSurface(Surface);
}
return Tmp;
}
char chr(int ascii)
{
return((char)ascii);
}
int ord(char chr)
{
return((int)chr);
}
void AddUnderScores (char *string)
{
int Teller;
for(Teller=0;Teller<strlen(string);Teller++)
if(string[Teller] == ' ')
string[Teller] = '_';
}
void RemoveUnderScores (char *string)
{
int Teller;
for(Teller=0;Teller<strlen(string);Teller++)
if(string[Teller] == '_')
string[Teller] = ' ';
}