Commit 599fb25b authored by Sam Lantinga's avatar Sam Lantinga

iPhone build compiles again (drawing routines need to be implemented)

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403398
parent 42a2b85b
...@@ -434,36 +434,6 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags) ...@@ -434,36 +434,6 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
return renderer; return renderer;
} }
static void
SetBlendMode(GL_RenderData * data, int blendMode)
{
if (blendMode != data->blendMode) {
switch (blendMode) {
case SDL_BLENDMODE_NONE:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
data->glDisable(GL_BLEND);
break;
case SDL_BLENDMODE_MASK:
case SDL_BLENDMODE_BLEND:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
break;
case SDL_BLENDMODE_ADD:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE);
break;
case SDL_BLENDMODE_MOD:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_ZERO, GL_SRC_COLOR);
break;
}
data->blendMode = blendMode;
}
}
static int static int
GL_ActivateRenderer(SDL_Renderer * renderer) GL_ActivateRenderer(SDL_Renderer * renderer)
{ {
...@@ -1066,12 +1036,42 @@ GL_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, int numrects, ...@@ -1066,12 +1036,42 @@ GL_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, int numrects,
} }
} }
static void
GL_SetBlendMode(GL_RenderData * data, int blendMode)
{
if (blendMode != data->blendMode) {
switch (blendMode) {
case SDL_BLENDMODE_NONE:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
data->glDisable(GL_BLEND);
break;
case SDL_BLENDMODE_MASK:
case SDL_BLENDMODE_BLEND:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
break;
case SDL_BLENDMODE_ADD:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE);
break;
case SDL_BLENDMODE_MOD:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_ZERO, GL_SRC_COLOR);
break;
}
data->blendMode = blendMode;
}
}
static int static int
GL_RenderPoint(SDL_Renderer * renderer, int x, int y) GL_RenderPoint(SDL_Renderer * renderer, int x, int y)
{ {
GL_RenderData *data = (GL_RenderData *) renderer->driverdata; GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
SetBlendMode(data, renderer->blendMode); GL_SetBlendMode(data, renderer->blendMode);
data->glColor4f((GLfloat) renderer->r * inv255f, data->glColor4f((GLfloat) renderer->r * inv255f,
(GLfloat) renderer->g * inv255f, (GLfloat) renderer->g * inv255f,
...@@ -1090,7 +1090,7 @@ GL_RenderLine(SDL_Renderer * renderer, int x1, int y1, int x2, int y2) ...@@ -1090,7 +1090,7 @@ GL_RenderLine(SDL_Renderer * renderer, int x1, int y1, int x2, int y2)
{ {
GL_RenderData *data = (GL_RenderData *) renderer->driverdata; GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
SetBlendMode(data, renderer->blendMode); GL_SetBlendMode(data, renderer->blendMode);
data->glColor4f((GLfloat) renderer->r * inv255f, data->glColor4f((GLfloat) renderer->r * inv255f,
(GLfloat) renderer->g * inv255f, (GLfloat) renderer->g * inv255f,
...@@ -1111,11 +1111,13 @@ GL_RenderFill(SDL_Renderer * renderer, const SDL_Rect * rect) ...@@ -1111,11 +1111,13 @@ GL_RenderFill(SDL_Renderer * renderer, const SDL_Rect * rect)
GL_RenderData *data = (GL_RenderData *) renderer->driverdata; GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
SDL_Window *window = SDL_GetWindowFromID(renderer->window); SDL_Window *window = SDL_GetWindowFromID(renderer->window);
GL_SetBlendMode(data, renderer->blendMode);
data->glColor4f((GLfloat) renderer->r * inv255f, data->glColor4f((GLfloat) renderer->r * inv255f,
(GLfloat) renderer->g * inv255f, (GLfloat) renderer->g * inv255f,
(GLfloat) renderer->b * inv255f, (GLfloat) renderer->b * inv255f,
(GLfloat) renderer->a * inv255f); (GLfloat) renderer->a * inv255f);
SetBlendMode(data, renderer->blendMode);
data->glRecti(rect->x, rect->y, rect->x + rect->w, rect->y + rect->h); data->glRecti(rect->x, rect->y, rect->x + rect->w, rect->y + rect->h);
return 0; return 0;
...@@ -1178,7 +1180,7 @@ GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, ...@@ -1178,7 +1180,7 @@ GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
data->glColor4f(1.0f, 1.0f, 1.0f, 1.0f); data->glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
} }
SetBlendMode(data, texture->blendMode); GL_SetBlendMode(data, texture->blendMode);
if (texture->scaleMode != data->scaleMode) { if (texture->scaleMode != data->scaleMode) {
switch (texture->scaleMode) { switch (texture->scaleMode) {
......
...@@ -66,8 +66,10 @@ static void GLES_UnlockTexture(SDL_Renderer * renderer, ...@@ -66,8 +66,10 @@ static void GLES_UnlockTexture(SDL_Renderer * renderer,
SDL_Texture * texture); SDL_Texture * texture);
static void GLES_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, static void GLES_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture,
int numrects, const SDL_Rect * rects); int numrects, const SDL_Rect * rects);
static int GLES_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, static int GLES_RenderPoint(SDL_Renderer * renderer, int x, int y);
Uint8 a, const SDL_Rect * rect); static int GLES_RenderLine(SDL_Renderer * renderer, int x1, int y1, int x2,
int y2);
static int GLES_RenderFill(SDL_Renderer * renderer, const SDL_Rect * rect);
static int GLES_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, static int GLES_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
const SDL_Rect * srcrect, const SDL_Rect * srcrect,
const SDL_Rect * dstrect); const SDL_Rect * dstrect);
...@@ -226,6 +228,8 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags) ...@@ -226,6 +228,8 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags)
renderer->LockTexture = GLES_LockTexture; renderer->LockTexture = GLES_LockTexture;
renderer->UnlockTexture = GLES_UnlockTexture; renderer->UnlockTexture = GLES_UnlockTexture;
renderer->DirtyTexture = GLES_DirtyTexture; renderer->DirtyTexture = GLES_DirtyTexture;
renderer->RenderPoint = GLES_RenderPoint;
renderer->RenderLine = GLES_RenderLine;
renderer->RenderFill = GLES_RenderFill; renderer->RenderFill = GLES_RenderFill;
renderer->RenderCopy = GLES_RenderCopy; renderer->RenderCopy = GLES_RenderCopy;
renderer->RenderPresent = GLES_RenderPresent; renderer->RenderPresent = GLES_RenderPresent;
...@@ -586,31 +590,93 @@ GLES_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture, ...@@ -586,31 +590,93 @@ GLES_DirtyTexture(SDL_Renderer * renderer, SDL_Texture * texture,
} }
} }
static void
GLES_SetBlendMode(GLES_RenderData * data, int blendMode)
{
if (blendMode != data->blendMode) {
switch (blendMode) {
case SDL_BLENDMODE_NONE:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
data->glDisable(GL_BLEND);
break;
case SDL_BLENDMODE_MASK:
case SDL_BLENDMODE_BLEND:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
break;
case SDL_BLENDMODE_ADD:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE);
break;
case SDL_BLENDMODE_MOD:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_ZERO, GL_SRC_COLOR);
break;
}
data->blendMode = blendMode;
}
}
static int static int
GLES_RenderFill(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a, GLES_RenderPoint(SDL_Renderer * renderer, int x, int y)
const SDL_Rect * rect)
{ {
GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata;
GLES_SetBlendMode(data, renderer->blendMode);
data->glColor4f((GLfloat) renderer->r * inv255f,
(GLfloat) renderer->g * inv255f,
(GLfloat) renderer->b * inv255f,
(GLfloat) renderer->a * inv255f);
/* FIXME:
data->glBegin(GL_POINTS);
data->glVertex2i(x, y);
data->glEnd();
*/
return 0;
}
static int
GLES_RenderLine(SDL_Renderer * renderer, int x1, int y1, int x2, int y2)
{
GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata; GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata;
SDL_Window *window = SDL_GetWindowFromID(renderer->window);
/* set proper drawing color */ GLES_SetBlendMode(data, renderer->blendMode);
GLfloat oldClearColor[4];
data->glGetFloatv(GL_COLOR_CLEAR_VALUE, oldClearColor); data->glColor4f((GLfloat) renderer->r * inv255f,
(GLfloat) renderer->g * inv255f,
(GLfloat) renderer->b * inv255f,
(GLfloat) renderer->a * inv255f);
/* FIXME:
data->glBegin(GL_LINES);
data->glVertex2i(x1, y1);
data->glVertex2i(x2, y2);
data->glEnd();
*/
return 0;
}
data->glClearColor((GLclampf) r * inv255f, (GLclampf) g * inv255f, static int
(GLclampf) b * inv255f, (GLclampf) a * inv255f); GLES_RenderFill(SDL_Renderer * renderer, const SDL_Rect * rect)
{
GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata;
SDL_Window *window = SDL_GetWindowFromID(renderer->window);
data->glScissor(rect->x, window->h - rect->y - rect->h, rect->w, rect->h); GLES_SetBlendMode(data, renderer->blendMode);
data->glEnable(GL_SCISSOR_TEST);
data->glClear(GL_COLOR_BUFFER_BIT);
data->glDisable(GL_SCISSOR_TEST);
/* reset clear color */ data->glColor4f((GLfloat) renderer->r * inv255f,
data->glClearColor(oldClearColor[0], oldClearColor[1], oldClearColor[2], (GLfloat) renderer->g * inv255f,
oldClearColor[2]); (GLfloat) renderer->b * inv255f,
(GLfloat) renderer->a * inv255f);
/* FIXME:
data->glRecti(rect->x, rect->y, rect->x + rect->w, rect->y + rect->h);
*/
return 0; return 0;
} }
...@@ -677,31 +743,7 @@ GLES_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, ...@@ -677,31 +743,7 @@ GLES_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
data->glColor4f(1.0f, 1.0f, 1.0f, 1.0f); data->glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
} }
if (texture->blendMode != data->blendMode) { GLES_SetBlendMode(data, texture->blendMode);
switch (texture->blendMode) {
case SDL_BLENDMODE_NONE:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
data->glDisable(GL_BLEND);
break;
case SDL_BLENDMODE_MASK:
case SDL_BLENDMODE_BLEND:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
break;
case SDL_BLENDMODE_ADD:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_SRC_ALPHA, GL_ONE);
break;
case SDL_BLENDMODE_MOD:
data->glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
data->glEnable(GL_BLEND);
data->glBlendFunc(GL_ZERO, GL_SRC_COLOR);
break;
}
data->blendMode = texture->blendMode;
}
switch (texture->scaleMode) { switch (texture->scaleMode) {
case SDL_TEXTURESCALEMODE_NONE: case SDL_TEXTURESCALEMODE_NONE:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment