annotate src/video/photon/SDL_photon_render.c @ 3396:d6b79fc83362

All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
author Mike Gorchak <lestat@i.com.ua>
date Tue, 13 Oct 2009 11:26:40 +0000
parents 05499ec8c022
children d15a4daa4a58
rev   line source
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1 /*
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
3 Copyright (C) 1997-2009 Sam Lantinga
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
4
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
6 modify it under the terms of the GNU Lesser General Public
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
8 version 2.1 of the License, or (at your option) any later version.
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
9
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
13 Lesser General Public License for more details.
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
14
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
15 You should have received a copy of the GNU Lesser General Public
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
16 License along with this library; if not, write to the Free Software
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
18
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
19 Sam Lantinga
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
20 slouken@libsdl.org
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
21
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
22 QNX Photon GUI SDL driver
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
23 Copyright (C) 2009 Mike Gorchak
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
24 (mike@malva.ua, lestat@i.com.ua)
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
25 */
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
26
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
27 #include "SDL_config.h"
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
28
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
29 #include "../SDL_pixels_c.h"
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
30 #include "../SDL_yuv_sw_c.h"
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
31
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
32 #include "SDL_video.h"
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
33
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
34 #include "SDL_photon_render.h"
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
35 #include "SDL_photon.h"
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
36
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
37 static SDL_Renderer *photon_createrenderer(SDL_Window * window, Uint32 flags);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
38 static int photon_displaymodechanged(SDL_Renderer * renderer);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
39 static int photon_activaterenderer(SDL_Renderer * renderer);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
40 static int photon_createtexture(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
41 SDL_Texture * texture);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
42 static int photon_querytexturepixels(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
43 SDL_Texture * texture, void **pixels,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
44 int *pitch);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
45 static int photon_settexturepalette(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
46 SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
47 const SDL_Color * colors, int firstcolor,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
48 int ncolors);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
49 static int photon_gettexturepalette(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
50 SDL_Texture * texture, SDL_Color * colors,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
51 int firstcolor, int ncolors);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
52 static int photon_settexturecolormod(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
53 SDL_Texture * texture);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
54 static int photon_settexturealphamod(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
55 SDL_Texture * texture);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
56 static int photon_settextureblendmode(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
57 SDL_Texture * texture);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
58 static int photon_settexturescalemode(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
59 SDL_Texture * texture);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
60 static int photon_updatetexture(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
61 SDL_Texture * texture, const SDL_Rect * rect,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
62 const void *pixels, int pitch);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
63 static int photon_locktexture(SDL_Renderer * renderer, SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
64 const SDL_Rect * rect, int markDirty,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
65 void **pixels, int *pitch);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
66 static void photon_unlocktexture(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
67 SDL_Texture * texture);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
68 static void photon_dirtytexture(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
69 SDL_Texture * texture, int numrects,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
70 const SDL_Rect * rects);
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
71 static int photon_setdrawcolor(SDL_Renderer * renderer);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
72 static int photon_setdrawblendmode(SDL_Renderer * renderer);
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
73 static int photon_renderpoint(SDL_Renderer * renderer, int x, int y);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
74 static int photon_renderline(SDL_Renderer * renderer, int x1, int y1, int x2,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
75 int y2);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
76 static int photon_renderfill(SDL_Renderer * renderer, const SDL_Rect * rect);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
77 static int photon_rendercopy(SDL_Renderer * renderer, SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
78 const SDL_Rect * srcrect,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
79 const SDL_Rect * dstrect);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
80 static void photon_renderpresent(SDL_Renderer * renderer);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
81 static void photon_destroytexture(SDL_Renderer * renderer,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
82 SDL_Texture * texture);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
83 static void photon_destroyrenderer(SDL_Renderer * renderer);
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
84
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
85 static int _photon_recreate_surfaces(SDL_Renderer * renderer);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
86
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
87 SDL_RenderDriver photon_renderdriver = {
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
88 photon_createrenderer,
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
89 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
90 "photon",
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
91 (SDL_RENDERER_SINGLEBUFFER | SDL_RENDERER_PRESENTCOPY |
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
92 SDL_RENDERER_PRESENTFLIP2 | SDL_RENDERER_PRESENTFLIP3 |
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
93 SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_PRESENTDISCARD |
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
94 SDL_RENDERER_ACCELERATED),
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
95 (SDL_TEXTUREMODULATE_NONE | SDL_TEXTUREMODULATE_ALPHA),
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
96 (SDL_BLENDMODE_NONE | SDL_BLENDMODE_MASK | SDL_BLENDMODE_BLEND |
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
97 SDL_BLENDMODE_ADD | SDL_BLENDMODE_MOD),
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
98 (SDL_TEXTURESCALEMODE_NONE | SDL_TEXTURESCALEMODE_SLOW |
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
99 SDL_TEXTURESCALEMODE_FAST),
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
100 10,
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
101 {SDL_PIXELFORMAT_INDEX8,
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
102 SDL_PIXELFORMAT_RGB555,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
103 SDL_PIXELFORMAT_RGB565,
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
104 SDL_PIXELFORMAT_RGB24,
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
105 SDL_PIXELFORMAT_RGB888,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
106 SDL_PIXELFORMAT_ARGB8888,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
107 SDL_PIXELFORMAT_YV12,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
108 SDL_PIXELFORMAT_YUY2,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
109 SDL_PIXELFORMAT_UYVY,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
110 SDL_PIXELFORMAT_YVYU},
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
111 0,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
112 0}
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
113 };
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
114
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
115 static SDL_Renderer *
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
116 photon_createrenderer(SDL_Window * window, Uint32 flags)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
117 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
118 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
119 SDL_DisplayData *didata = (SDL_DisplayData *) display->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
120 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
121 SDL_Renderer *renderer = NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
122 SDL_RenderData *rdata = NULL;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
123
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
124 /* Allocate new renderer structure */
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
125 renderer = (SDL_Renderer *) SDL_calloc(1, sizeof(SDL_Renderer));
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
126 if (renderer == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
127 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
128 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
129 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
130
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
131 /* Allocate renderer data */
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
132 rdata = (SDL_RenderData *) SDL_calloc(1, sizeof(SDL_RenderData));
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
133 if (rdata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
134 SDL_free(renderer);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
135 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
136 return NULL;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
137 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
138
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
139 renderer->DisplayModeChanged = photon_displaymodechanged;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
140 renderer->ActivateRenderer = photon_activaterenderer;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
141 renderer->CreateTexture = photon_createtexture;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
142 renderer->QueryTexturePixels = photon_querytexturepixels;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
143 renderer->SetTexturePalette = photon_settexturepalette;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
144 renderer->GetTexturePalette = photon_gettexturepalette;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
145 renderer->SetTextureAlphaMod = photon_settexturealphamod;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
146 renderer->SetTextureColorMod = photon_settexturecolormod;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
147 renderer->SetTextureBlendMode = photon_settextureblendmode;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
148 renderer->SetTextureScaleMode = photon_settexturescalemode;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
149 renderer->UpdateTexture = photon_updatetexture;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
150 renderer->LockTexture = photon_locktexture;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
151 renderer->UnlockTexture = photon_unlocktexture;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
152 renderer->DirtyTexture = photon_dirtytexture;
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
153 renderer->SetDrawColor = photon_setdrawcolor;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
154 renderer->SetDrawBlendMode = photon_setdrawblendmode;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
155 renderer->RenderPoint = photon_renderpoint;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
156 renderer->RenderLine = photon_renderline;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
157 renderer->RenderFill = photon_renderfill;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
158 renderer->RenderCopy = photon_rendercopy;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
159 renderer->RenderPresent = photon_renderpresent;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
160 renderer->DestroyTexture = photon_destroytexture;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
161 renderer->DestroyRenderer = photon_destroyrenderer;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
162 renderer->info = photon_renderdriver.info;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
163 renderer->window = window->id;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
164 renderer->driverdata = rdata;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
165
3387
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
166 /* Copy direct_mode status */
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
167 rdata->direct_mode=didata->direct_mode;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
168
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
169 /* Set render acceleration flag in case it is accelerated */
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
170 if ((didata->caps & SDL_PHOTON_ACCELERATED) == SDL_PHOTON_ACCELERATED) {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
171 renderer->info.flags = SDL_RENDERER_ACCELERATED;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
172 } else {
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
173 renderer->info.flags = 0;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
174 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
175
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
176 /* Check if upper level requested synchronization on vsync signal */
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
177 if ((flags & SDL_RENDERER_PRESENTVSYNC) == SDL_RENDERER_PRESENTVSYNC) {
3387
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
178 if (rdata->direct_mode==SDL_TRUE)
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
179 {
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
180 /* We can control vsync only in direct mode */
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
181 rdata->enable_vsync = SDL_TRUE;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
182 renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
183 }
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
184 else
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
185 {
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
186 rdata->enable_vsync = SDL_FALSE;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
187 }
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
188 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
189 rdata->enable_vsync = SDL_FALSE;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
190 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
191
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
192 /* Check what buffer copy/flip scheme is requested */
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
193 rdata->surfaces_count = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
194 if ((flags & SDL_RENDERER_SINGLEBUFFER) == SDL_RENDERER_SINGLEBUFFER) {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
195 if ((flags & SDL_RENDERER_PRESENTDISCARD) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
196 SDL_RENDERER_PRESENTDISCARD) {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
197 renderer->info.flags |=
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
198 SDL_RENDERER_SINGLEBUFFER | SDL_RENDERER_PRESENTDISCARD;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
199 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
200 renderer->info.flags |=
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
201 SDL_RENDERER_SINGLEBUFFER | SDL_RENDERER_PRESENTCOPY;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
202 }
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
203 rdata->surfaces_count = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
204 rdata->surface_visible_idx = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
205 rdata->surface_render_idx = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
206 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
207 if ((flags & SDL_RENDERER_PRESENTFLIP2) == SDL_RENDERER_PRESENTFLIP2) {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
208 renderer->info.flags |= SDL_RENDERER_PRESENTFLIP2;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
209 rdata->surfaces_count = 2;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
210 rdata->surface_visible_idx = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
211 rdata->surface_render_idx = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
212 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
213 if ((flags & SDL_RENDERER_PRESENTFLIP3) ==
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
214 SDL_RENDERER_PRESENTFLIP3) {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
215 renderer->info.flags |= SDL_RENDERER_PRESENTFLIP3;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
216 rdata->surfaces_count = 3;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
217 rdata->surface_visible_idx = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
218 rdata->surface_render_idx = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
219 } else {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
220 renderer->info.flags |=
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
221 SDL_RENDERER_SINGLEBUFFER | SDL_RENDERER_PRESENTCOPY;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
222 rdata->surfaces_count = 1;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
223 rdata->surface_visible_idx = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
224 rdata->surface_render_idx = 0;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
225 }
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
226 }
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
227 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
228
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
229 /* Create new graphics context for the renderer */
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
230 if (rdata->gc==NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
231 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
232 rdata->gc=PgCreateGC(0);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
233 PgDefaultGC(rdata->gc);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
234 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
235
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
236 /* Setup textures supported by current renderer instance */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
237 renderer->info.num_texture_formats=1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
238 renderer->info.texture_formats[0]=didata->current_mode.format;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
239
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
240 /* Initialize surfaces */
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
241 _photon_recreate_surfaces(renderer);
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
242
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
243 /* Set current scale blitting capabilities */
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
244 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_OFFSCREEN)
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
245 {
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
246 renderer->info.scale_modes=SDL_TEXTURESCALEMODE_NONE | SDL_TEXTURESCALEMODE_SLOW;
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
247 if ((didata->mode_2dcaps & SDL_VIDEO_PHOTON_CAP_SCALED_BLIT)==SDL_VIDEO_PHOTON_CAP_SCALED_BLIT)
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
248 {
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
249 /* This video mode supports hardware scaling */
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
250 renderer->info.scale_modes|=SDL_TEXTURESCALEMODE_FAST;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
251 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
252 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
253 else
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
254 {
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
255 /* PhImage blit functions do not support scaling */
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
256 renderer->info.scale_modes=SDL_TEXTURESCALEMODE_NONE;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
257 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
258
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
259 return renderer;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
260 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
261
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
262 void
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
263 photon_addrenderdriver(_THIS)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
264 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
265 uint32_t it;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
266
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
267 for (it = 0; it < _this->num_displays; it++) {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
268 SDL_AddRenderDriver(it, &photon_renderdriver);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
269 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
270 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
271
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
272 /****************************************************************************/
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
273 /* Renderer helper functions */
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
274 /****************************************************************************/
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
275
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
276 static int _photon_recreate_surfaces(SDL_Renderer * renderer)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
277 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
278 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
279 SDL_VideoDisplay *display = NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
280 SDL_DisplayData *didata = NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
281 SDL_Window *window = NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
282 SDL_WindowData *wdata = NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
283 SDL_VideoData *phdata = NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
284 uint32_t allocate_task=SDL_PHOTON_SURFTYPE_UNKNOWN;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
285 int32_t status;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
286
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
287 /* Obtain window and display structures */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
288 window=SDL_GetWindowFromID(renderer->window);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
289 wdata=(SDL_WindowData*)window->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
290 display=SDL_GetDisplayFromWindow(window);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
291 didata=(SDL_DisplayData *) display->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
292 phdata=(SDL_VideoData *) display->device->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
293
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
294 /* Check if it is OpenGL ES window */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
295 if ((window->flags & SDL_WINDOW_OPENGL) == SDL_WINDOW_OPENGL) {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
296 /* If so, do not waste surfaces */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
297 rdata->surfaces_type=SDL_PHOTON_SURFTYPE_UNKNOWN;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
298 return 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
299 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
300
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
301 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
302 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
303 /* Try to allocate offscreen surfaces */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
304 allocate_task=SDL_PHOTON_SURFTYPE_OFFSCREEN;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
305 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
306 else
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
307 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
308 uint32_t it;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
309
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
310 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_OFFSCREEN)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
311 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
312 /* Create offscreen surfaces */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
313 allocate_task=SDL_PHOTON_SURFTYPE_OFFSCREEN;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
314
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
315 /* Destroy current surfaces */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
316 for (it=0; it<SDL_PHOTON_MAX_SURFACES; it++)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
317 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
318 if (rdata->osurfaces[it] != NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
319 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
320 PhDCRelease(rdata->osurfaces[it]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
321 rdata->osurfaces[it] = NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
322 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
323 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
324 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
325 else
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
326 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
327 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_PHIMAGE)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
328 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
329 /* Create shared phimage surfaces */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
330 allocate_task=SDL_PHOTON_SURFTYPE_PHIMAGE;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
331
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
332 /* Destroy current surfaces */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
333 for (it=0; it<SDL_PHOTON_MAX_SURFACES; it++)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
334 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
335 if (rdata->pcontexts[it]!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
336 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
337 PmMemReleaseMC(rdata->pcontexts[it]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
338 rdata->pcontexts[it]=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
339 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
340 if (rdata->psurfaces[it]!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
341 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
342 if (rdata->psurfaces[it]->palette!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
343 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
344 SDL_free(rdata->psurfaces[it]->palette);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
345 rdata->psurfaces[it]->palette=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
346 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
347 /* Destroy shared memory for PhImage_t */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
348 PgShmemDestroy(rdata->psurfaces[it]->image);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
349 rdata->psurfaces[it]->image=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
350 SDL_free(rdata->psurfaces[it]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
351 rdata->psurfaces[it]=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
352 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
353 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
354 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
355 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
356 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
357
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
358 /* Check if current device is not the same as target */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
359 if (phdata->current_device_id != didata->device_id) {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
360 /* Set target device as default for Pd and Pg functions */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
361 status = PdSetTargetDevice(NULL, phdata->rid[didata->device_id]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
362 if (status != 0) {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
363 SDL_SetError("Photon: Can't set default target device\n");
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
364 return -1;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
365 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
366 phdata->current_device_id = didata->device_id;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
367 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
368
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
369 switch (allocate_task)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
370 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
371 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
372 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
373 int32_t it;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
374 int32_t jt;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
376 /* Try the hardware accelerated offscreen surfaces first */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
377 for (it=0; it<rdata->surfaces_count; it++)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
378 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
379 rdata->osurfaces[it]=PdCreateOffscreenContext(0, window->w, window->h,
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
380 Pg_OSC_MEM_LINEAR_ACCESSIBLE | Pg_OSC_MEM_PAGE_ALIGN |
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
381 /* in case if 2D acceleration is available use it */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
382 Pg_OSC_MEM_2D_WRITABLE | Pg_OSC_MEM_2D_READABLE);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
383 /* If we can't create an offscreen surface, then fallback to software */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
384 if (rdata->osurfaces[it]==NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
385 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
386 /* Destroy previously allocated surface(s) */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
387 for (jt = it - 1; jt > 0; jt--)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
388 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
389 PhDCRelease(rdata->osurfaces[jt]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
390 rdata->osurfaces[jt] = NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
391 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
392 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
393 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
394 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
395
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
396 /* Check if all required surfaces have been created */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
397 if (rdata->osurfaces[0]!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
398 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
399 rdata->surfaces_type=SDL_PHOTON_SURFTYPE_OFFSCREEN;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
400 /* exit from switch if surfaces have been created */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
401 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
402 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
403 else
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
404 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
405 /* else fall through to software phimage surface allocation */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
406 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
407 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
408 /* fall through */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
409 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
410 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
411 int32_t it;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
412 int32_t jt;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
413 uint32_t image_pfmt=photon_sdl_to_image_pixelformat(didata->current_mode.format);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
414
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
415 /* Try to allocate the software surfaces in shared memory */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
416 for (it=0; it<rdata->surfaces_count; it++)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
417 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
418 /* If this surface with palette, create a palette space */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
419 if (image_pfmt==Pg_IMAGE_PALETTE_BYTE)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
420 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
421 rdata->psurfaces[it]=PhCreateImage(NULL, window->w, window->h,
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
422 image_pfmt, NULL, 256, 1);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
423 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
424 else
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
425 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
426 rdata->psurfaces[it]=PhCreateImage(NULL, window->w, window->h,
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
427 image_pfmt, NULL, 0, 1);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
428 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
429
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
430 if (rdata->psurfaces[it]!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
431 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
432 PhPoint_t translation={0, 0};
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
433 PhDim_t dimension={window->w, window->h};
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
434
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
435 /* Create memory context for PhImage_t */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
436 rdata->pcontexts[it]=PmMemCreateMC(rdata->psurfaces[it], &dimension, &translation);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
437 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
438
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
439 if ((rdata->psurfaces[it]==NULL) || (rdata->pcontexts[it]==NULL))
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
440 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
441 /* Destroy previously allocated surface(s) */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
442 for (jt = it - 1; jt > 0; jt--)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
443 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
444 if (rdata->pcontexts[jt]!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
445 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
446 PmMemReleaseMC(rdata->pcontexts[it]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
447 rdata->pcontexts[jt]=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
448 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
449 if (rdata->psurfaces[jt]!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
450 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
451 if (rdata->psurfaces[jt]->palette!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
452 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
453 SDL_free(rdata->psurfaces[jt]->palette);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
454 rdata->psurfaces[jt]->palette=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
455 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
456 /* Destroy shared memory for PhImage_t */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
457 PgShmemDestroy(rdata->psurfaces[jt]->image);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
458 rdata->psurfaces[jt]->image=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
459 SDL_free(rdata->psurfaces[jt]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
460 rdata->psurfaces[jt] = NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
461 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
462 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
463 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
464 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
465 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
466
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
467 /* Check if all required surfaces have been created */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
468 if (rdata->psurfaces[0]!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
469 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
470 rdata->surfaces_type=SDL_PHOTON_SURFTYPE_PHIMAGE;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
471 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
472 else
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
473 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
474 rdata->surfaces_type=SDL_PHOTON_SURFTYPE_UNKNOWN;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
475 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
476 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
477 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
478 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
479 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
480 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
481 /* do nothing with surface allocation */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
482 rdata->surfaces_type=SDL_PHOTON_SURFTYPE_UNKNOWN;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
483 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
484 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
485 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
486
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
487 /* Check if one of two allocation scheme was successful */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
488 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
489 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
490 SDL_SetError("Photon: primary surface(s) allocation failure");
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
491 return -1;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
492 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
493
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
494 /* Store current surface dimensions */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
495 rdata->window_width=window->w;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
496 rdata->window_height=window->h;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
497
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
498 /* If current copy/flip scheme is single buffer, then set initial parameters */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
499 if ((renderer->info.flags & SDL_RENDERER_SINGLEBUFFER)==SDL_RENDERER_SINGLEBUFFER)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
500 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
501 rdata->surface_visible_idx = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
502 rdata->surface_render_idx = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
503 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
504
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
505 /* If current copy/flip scheme is double buffer, then set initial parameters */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
506 if ((renderer->info.flags & SDL_RENDERER_PRESENTFLIP2)==SDL_RENDERER_PRESENTFLIP2)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
507 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
508 rdata->surface_visible_idx = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
509 rdata->surface_render_idx = 1;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
510 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
511
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
512 /* If current copy/flip scheme is triple buffer, then set initial parameters */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
513 if ((renderer->info.flags & SDL_RENDERER_PRESENTFLIP3)==SDL_RENDERER_PRESENTFLIP3)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
514 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
515 rdata->surface_visible_idx = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
516 rdata->surface_render_idx = 1;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
517 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
518
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
519 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
520 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
521 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
522 PgSetGCCx(rdata->osurfaces[rdata->surface_render_idx], rdata->gc);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
523 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
524 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
525 PgSetGCCx(rdata->pcontexts[rdata->surface_render_idx], rdata->gc);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
526 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
527 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
528 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
529 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
530 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
531
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
532 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
533 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
534
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
535 int _photon_update_rectangles(SDL_Renderer* renderer, PhRect_t* rect)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
536 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
537 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
538 SDL_Window *window = window=SDL_GetWindowFromID(renderer->window);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
539 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
540 PhPoint_t src_point;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
541
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
542 /* If currently single buffer is in use, we have to flush all data */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
543 if (rdata->surface_render_idx==rdata->surface_visible_idx)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
544 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
545 /* Flush all undrawn graphics data to surface */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
546 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
547 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
548 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
549 PgFlushCx(rdata->osurfaces[rdata->surface_visible_idx]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
550 PgWaitHWIdle();
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
551 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
552 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
553 PmMemFlush(rdata->pcontexts[rdata->surface_visible_idx], rdata->psurfaces[rdata->surface_visible_idx]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
554 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
555 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
556 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
557 return;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
558 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
559 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
560
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
561 PgSetRegionCx(PhDCGetCurrent(), PtWidgetRid(wdata->window));
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
562
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
563 src_point.x = rect->ul.x;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
564 src_point.y = rect->ul.y;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
565
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
566 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
567 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
568 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
569 PgContextBlit(rdata->osurfaces[rdata->surface_visible_idx], rect, NULL, rect);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
570 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
571 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
572 PgDrawPhImageRectv(&src_point, rdata->psurfaces[rdata->surface_visible_idx], rect, 0);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
573 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
574 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
575 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
576 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
577 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
578 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
579
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
580 int _photon_set_blending(SDL_Renderer* renderer, uint32_t blendmode, uint32_t globalalpha, uint32_t blendsource)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
581 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
582 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
583
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
584 /* Switch on requested graphics context modifiers */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
585 switch (blendmode)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
586 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
587 case SDL_BLENDMODE_MASK:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
588 /* Enable and set chroma key */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
589 if (blendsource==SDL_PHOTON_TEXTURE_BLEND)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
590 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
591 PgSetChromaCx(rdata->gc, PgRGB(255, 255, 255), Pg_CHROMA_SRC_MATCH | Pg_CHROMA_NODRAW);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
592 PgChromaOnCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
593 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
594 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
595 case SDL_BLENDMODE_BLEND:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
596 /* Enable and set chroma key and alpha blending */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
597 if (blendsource==SDL_PHOTON_TEXTURE_BLEND)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
598 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
599 PgSetChromaCx(rdata->gc, PgRGB(255, 255, 255), Pg_CHROMA_SRC_MATCH | Pg_CHROMA_NODRAW);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
600 PgChromaOnCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
601 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
602 PgSetAlphaCx(rdata->gc, Pg_ALPHA_OP_SRC_GLOBAL | Pg_BLEND_SRC_As | Pg_BLEND_DST_1mAs, NULL, NULL, globalalpha, 0);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
603 PgAlphaOnCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
604 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
605 case SDL_BLENDMODE_ADD:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
606 /* Enable and set chroma key and alpha blending */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
607 if (blendsource==SDL_PHOTON_TEXTURE_BLEND)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
608 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
609 PgSetChromaCx(rdata->gc, PgRGB(255, 255, 255), Pg_CHROMA_SRC_MATCH | Pg_CHROMA_NODRAW);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
610 PgChromaOnCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
611 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
612 PgSetAlphaCx(rdata->gc, Pg_ALPHA_OP_SRC_GLOBAL | Pg_BLEND_SRC_As | Pg_BLEND_DST_1, NULL, NULL, globalalpha, 0);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
613 PgAlphaOnCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
614 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
615 case SDL_BLENDMODE_MOD:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
616 /* Enable and set alpha blending */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
617 PgSetAlphaCx(rdata->gc, Pg_BLEND_SRC_0 | Pg_BLEND_DST_S, NULL, NULL, 0, 0);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
618 PgAlphaOnCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
619 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
620 case SDL_BLENDMODE_NONE:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
621 /* Do nothing */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
622 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
623 default:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
624 return -1;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
625 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
626
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
627 return 0;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
628 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
629
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
630 int _photon_reset_blending(SDL_Renderer* renderer, uint32_t blendmode, uint32_t blendsource)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
631 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
632 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
633
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
634 /* Switch off graphics context modifiers */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
635 switch (blendmode)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
636 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
637 case SDL_BLENDMODE_MASK:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
638 /* Disable chroma key */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
639 if (blendsource==SDL_PHOTON_TEXTURE_BLEND)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
640 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
641 PgChromaOffCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
642 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
643 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
644 case SDL_BLENDMODE_BLEND:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
645 /* Disable chroma key and alpha blending */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
646 if (blendsource==SDL_PHOTON_TEXTURE_BLEND)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
647 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
648 PgChromaOffCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
649 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
650 PgAlphaOffCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
651 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
652 case SDL_BLENDMODE_ADD:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
653 /* Disable chroma key and alpha blending */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
654 if (blendsource==SDL_PHOTON_TEXTURE_BLEND)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
655 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
656 PgChromaOffCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
657 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
658 PgAlphaOffCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
659 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
660 case SDL_BLENDMODE_MOD:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
661 /* Disable chroma key and alpha blending */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
662 PgAlphaOffCx(rdata->gc);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
663 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
664 case SDL_BLENDMODE_NONE:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
665 /* Do nothing */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
666 break;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
667 default:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
668 return -1;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
669 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
670
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
671 return 0;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
672 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
673
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
674 /****************************************************************************/
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
675 /* SDL render interface */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
676 /****************************************************************************/
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
677
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
678 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
679 photon_activaterenderer(SDL_Renderer * renderer)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
680 {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
681 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
682 SDL_Window *window = SDL_GetWindowFromID(renderer->window);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
683 SDL_WindowData *wdata = (SDL_WindowData *)window->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
684
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
685 if ((rdata->window_width!=window->w) || (rdata->window_height!=window->h))
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
686 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
687 return _photon_recreate_surfaces(renderer);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
688 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
689
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
690 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
691 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
692 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
693 PgSetGCCx(rdata->osurfaces[rdata->surface_render_idx], rdata->gc);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
694 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
695 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
696 PgSetGCCx(rdata->pcontexts[rdata->surface_render_idx], rdata->gc);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
697 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
698 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
699 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
700 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
701 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
702
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
703 return 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
704 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
705
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
706 static int
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
707 photon_displaymodechanged(SDL_Renderer * renderer)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
708 {
3387
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
709 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
710 SDL_Window *window = SDL_GetWindowFromID(renderer->window);
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
711 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
712 SDL_DisplayData *didata = (SDL_DisplayData *) display->driverdata;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
713
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
714 /* Copy direct_mode status */
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
715 rdata->direct_mode=didata->direct_mode;
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
716
05499ec8c022 Initial support for fullscreen application modes.
Mike Gorchak <lestat@i.com.ua>
parents: 3386
diff changeset
717 /* Update the surfaces */
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
718 return _photon_recreate_surfaces(renderer);
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
719 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
720
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
721 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
722 photon_createtexture(SDL_Renderer * renderer, SDL_Texture * texture)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
723 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
724 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
725 SDL_Window *window = SDL_GetWindowFromID(renderer->window);
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
726 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
727 SDL_DisplayData *didata = (SDL_DisplayData *) display->driverdata;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
728 SDL_TextureData *tdata = NULL;
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
729 uint32_t it;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
730
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
731 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
732 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
733 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
734 SDL_SetError("Photon: can't create texture for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
735 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
736 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
737
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
738 /* Check if requested texture format is supported */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
739 for (it=0; it<renderer->info.num_texture_formats; it++)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
740 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
741 if (renderer->info.texture_formats[it]==texture->format)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
742 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
743 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
744 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
745 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
746 if (it==renderer->info.num_texture_formats)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
747 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
748 SDL_SetError("Photon: requested texture format is not supported");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
749 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
750 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
751
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
752 /* Allocate texture driver data */
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
753 tdata = (SDL_TextureData *) SDL_calloc(1, sizeof(SDL_TextureData));
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
754 if (tdata == NULL) {
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
755 SDL_OutOfMemory();
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
756 return -1;
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
757 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
758
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
759 /* Set texture driver data */
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
760 texture->driverdata = tdata;
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
761
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
762 /* Try offscreen allocation only in case if displayable buffers are also offscreen */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
763 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_OFFSCREEN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
764 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
765 /* Try to allocate offscreen memory first */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
766 tdata->osurface=PdCreateOffscreenContext(0, texture->w, texture->h,
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
767 Pg_OSC_MEM_LINEAR_ACCESSIBLE | Pg_OSC_MEM_PAGE_ALIGN |
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
768 /* in case if 2D acceleration is available use it */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
769 Pg_OSC_MEM_2D_WRITABLE | Pg_OSC_MEM_2D_READABLE);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
770 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
771
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
772 /* Check if offscreen allocation has been failed or not performed */
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
773 if (tdata->osurface==NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
774 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
775 PhPoint_t translation={0, 0};
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
776 PhDim_t dimension={texture->w, texture->h};
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
777 uint32_t image_pfmt=photon_sdl_to_image_pixelformat(didata->current_mode.format);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
778
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
779 /* Allocate photon image */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
780 if (image_pfmt==Pg_IMAGE_PALETTE_BYTE)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
781 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
782 tdata->psurface=PhCreateImage(NULL, texture->w, texture->h,
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
783 image_pfmt, NULL, 256, 1);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
784 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
785 else
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
786 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
787 tdata->psurface=PhCreateImage(NULL, texture->w, texture->h,
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
788 image_pfmt, NULL, 0, 1);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
789 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
790
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
791 if (tdata->psurface==NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
792 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
793 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
794 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
795
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
796 /* Create memory context for PhImage_t */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
797 tdata->pcontext=PmMemCreateMC(tdata->psurface, &dimension, &translation);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
798 if (tdata->pcontext==NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
799 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
800 /* Destroy PhImage */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
801 if (tdata->psurface!=NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
802 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
803 if (tdata->psurface->palette!=NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
804 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
805 SDL_free(tdata->psurface->palette);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
806 tdata->psurface->palette=NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
807 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
808 /* Destroy shared memory for PhImage_t */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
809 PgShmemDestroy(tdata->psurface->image);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
810 tdata->psurface->image=NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
811 SDL_free(tdata->psurface);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
812 tdata->psurface=NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
813 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
814 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
815 tdata->surface_type=SDL_PHOTON_SURFTYPE_PHIMAGE;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
816 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
817 else
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
818 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
819 tdata->surface_type=SDL_PHOTON_SURFTYPE_OFFSCREEN;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
820 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
821
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
822 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
823 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
824
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
825 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
826 photon_querytexturepixels(SDL_Renderer * renderer, SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
827 void **pixels, int *pitch)
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
828 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
829 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
830 SDL_TextureData* tdata=(SDL_TextureData*)texture->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
831
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
832 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
833 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
834 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
835 SDL_SetError("Photon: can't query texture pixels for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
836 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
837 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
838
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
839 /* Clear outcoming parameters */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
840 *pixels=NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
841 *pitch=0;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
842
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
843 switch (tdata->surface_type)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
844 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
845 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
846 *pixels=(void*)PdGetOffscreenContextPtr(tdata->osurface);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
847 *pitch=tdata->osurface->pitch;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
848 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
849 case SDL_PHOTON_SURFTYPE_PHIMAGE:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
850 *pixels=(void*)tdata->psurface->image;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
851 *pitch=tdata->psurface->bpl;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
852 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
853 default:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
854 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
855 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
856
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
857 return 0;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
858 }
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
859
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
860 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
861 photon_settexturepalette(SDL_Renderer * renderer, SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
862 const SDL_Color * colors, int firstcolor,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
863 int ncolors)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
864 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
865 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
866 SDL_TextureData* tdata=(SDL_TextureData*)texture->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
867
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
868 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
869 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
870 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
871 SDL_SetError("Photon: can't set texture palette for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
872 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
873 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
874
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
875 if (texture->format!=SDL_PIXELFORMAT_INDEX8)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
876 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
877 SDL_SetError("Photon: can't set palette for non-paletted texture");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
878 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
879 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
880
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
881 SDL_Unsupported();
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
882 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
883 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
884
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
885 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
886 photon_gettexturepalette(SDL_Renderer * renderer, SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
887 SDL_Color * colors, int firstcolor, int ncolors)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
888 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
889 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
890 SDL_TextureData* tdata=(SDL_TextureData*)texture->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
891
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
892 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
893 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
894 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
895 SDL_SetError("Photon: can't return texture palette for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
896 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
897 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
898
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
899 if (texture->format!=SDL_PIXELFORMAT_INDEX8)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
900 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
901 SDL_SetError("Photon: can't return palette for non-paletted texture");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
902 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
903 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
904
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
905 SDL_Unsupported();
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
906 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
907 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
908
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
909 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
910 photon_settexturecolormod(SDL_Renderer * renderer, SDL_Texture * texture)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
911 {
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
912 SDL_Unsupported();
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
913 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
914 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
915
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
916 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
917 photon_settexturealphamod(SDL_Renderer * renderer, SDL_Texture * texture)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
918 {
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
919 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
920
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
921 /* Check, if it is not initialized */
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
922 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
923 {
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
924 SDL_SetError("Photon: can't set texture blend mode for OpenGL ES window");
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
925 return -1;
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
926 }
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
927
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
928 /* Check if current renderer instance supports alpha modulation */
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
929 if ((renderer->info.mod_modes & SDL_TEXTUREMODULATE_ALPHA)!=SDL_TEXTUREMODULATE_ALPHA)
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
930 {
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
931 SDL_Unsupported();
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
932 return -1;
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
933 }
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
934
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
935 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
936 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
937
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
938 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
939 photon_settextureblendmode(SDL_Renderer * renderer, SDL_Texture * texture)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
940 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
941 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
942
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
943 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
944 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
945 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
946 SDL_SetError("Photon: can't set texture blend mode for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
947 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
948 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
949
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
950 switch (texture->blendMode)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
951 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
952 case SDL_BLENDMODE_NONE:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
953 case SDL_BLENDMODE_MASK:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
954 case SDL_BLENDMODE_BLEND:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
955 case SDL_BLENDMODE_ADD:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
956 case SDL_BLENDMODE_MOD:
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
957 return 0;
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
958 default:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
959 SDL_Unsupported();
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
960 texture->blendMode = SDL_BLENDMODE_NONE;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
961 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
962 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
963 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
964
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
965 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
966 photon_settexturescalemode(SDL_Renderer * renderer, SDL_Texture * texture)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
967 {
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
968 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
969
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
970 switch (texture->scaleMode)
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
971 {
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
972 case SDL_TEXTURESCALEMODE_NONE:
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
973 return 0;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
974 case SDL_TEXTURESCALEMODE_FAST:
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
975 if ((renderer->info.scale_modes & SDL_TEXTURESCALEMODE_FAST)==SDL_TEXTURESCALEMODE_FAST)
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
976 {
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
977 return 0;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
978 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
979 else
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
980 {
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
981 SDL_Unsupported();
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
982 texture->scaleMode = SDL_TEXTURESCALEMODE_FAST;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
983 return -1;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
984 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
985 break;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
986 case SDL_TEXTURESCALEMODE_SLOW:
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
987 if ((renderer->info.scale_modes & SDL_TEXTURESCALEMODE_SLOW)==SDL_TEXTURESCALEMODE_SLOW)
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
988 {
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
989 return 0;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
990 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
991 else
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
992 {
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
993 SDL_Unsupported();
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
994 texture->scaleMode = SDL_TEXTURESCALEMODE_SLOW;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
995 return -1;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
996 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
997 break;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
998 case SDL_TEXTURESCALEMODE_BEST:
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
999 SDL_Unsupported();
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1000 texture->scaleMode = SDL_TEXTURESCALEMODE_SLOW;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1001 return -1;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1002 default:
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1003 SDL_Unsupported();
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1004 texture->scaleMode = SDL_TEXTURESCALEMODE_NONE;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1005 return -1;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1006 }
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1007
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
1008 SDL_Unsupported();
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1009 return -1;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1010 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1011
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1012 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1013 photon_updatetexture(SDL_Renderer * renderer, SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1014 const SDL_Rect * rect, const void *pixels, int pitch)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1015 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1016 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1017 SDL_TextureData* tdata=(SDL_TextureData*)texture->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1018
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1019 uint8_t* src=(uint8_t*)pixels;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1020 uint8_t* dst;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1021 uint32_t dst_pitch;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1022 uint32_t it;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1023 uint32_t copy_length;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1024
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1025 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1026 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1027 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1028 SDL_SetError("Photon: can't update texture for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1029 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1030 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1031
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1032 switch (tdata->surface_type)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1033 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1034 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1035 dst=(uint8_t*)PdGetOffscreenContextPtr(tdata->osurface);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1036 dst_pitch=tdata->osurface->pitch;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1037 if (dst==NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1038 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1039 SDL_SetError("Photon: can't get pointer to texture surface");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1040 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1041 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1042 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1043 case SDL_PHOTON_SURFTYPE_PHIMAGE:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1044 dst=(uint8_t*)tdata->psurface->image;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1045 dst_pitch=tdata->psurface->bpl;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1046 if (dst==NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1047 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1048 SDL_SetError("Photon: can't get pointer to texture surface");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1049 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1050 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1051 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1052 default:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1053 SDL_SetError("Photon: invalid internal surface type");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1054 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1055 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1056
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1057 dst+=rect->y * dst_pitch + rect->x * SDL_BYTESPERPIXEL(texture->format);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1058 copy_length=rect->w * SDL_BYTESPERPIXEL(texture->format);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1059 for (it = 0; it < rect->h; it++)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1060 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1061 SDL_memcpy(dst, src, copy_length);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1062 src+=pitch;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1063 dst+=dst_pitch;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1064 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1065
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1066 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1067 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1068
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1069 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1070 photon_locktexture(SDL_Renderer * renderer, SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1071 const SDL_Rect * rect, int markDirty, void **pixels,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1072 int *pitch)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1073 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1074 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1075 SDL_TextureData* tdata=(SDL_TextureData*)texture->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1076
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1077 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1078 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1079 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1080 SDL_SetError("Photon: can't lock texture for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1081 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1082 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1083
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1084 /* Clear outcoming parameters */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1085 *pixels=NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1086 *pitch=0;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1087
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1088 switch (tdata->surface_type)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1089 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1090 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1091 *pixels=(void*)((uint8_t*)PdGetOffscreenContextPtr(tdata->osurface) +
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1092 rect->y * tdata->osurface->pitch +
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1093 rect->x * SDL_BYTESPERPIXEL(texture->format));
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1094 *pitch=tdata->osurface->pitch;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1095 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1096 case SDL_PHOTON_SURFTYPE_PHIMAGE:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1097 *pixels=(void*)((uint8_t*)tdata->psurface->image +
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1098 rect->y * tdata->osurface->pitch +
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1099 rect->x * SDL_BYTESPERPIXEL(texture->format));
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1100 *pitch=tdata->psurface->bpl;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1101 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1102 default:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1103 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1104 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1105
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1106 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1107 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1108
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1109 static void
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1110 photon_unlocktexture(SDL_Renderer * renderer, SDL_Texture * texture)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1111 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1112 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1113
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1114 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1115 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1116 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1117 SDL_SetError("Photon: can't unlock texture for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1118 return;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1119 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1120 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1121
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1122 static void
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1123 photon_dirtytexture(SDL_Renderer * renderer, SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1124 int numrects, const SDL_Rect * rects)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1125 {
3386
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
1126 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
fff074de9675 Photon SDL renderer almost finished, the double/tripple buffering is left only.
Mike Gorchak <lestat@i.com.ua>
parents: 3384
diff changeset
1127
3384
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1128 /* Check, if it is not initialized */
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1129 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1130 {
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1131 SDL_SetError("Photon: can't update dirty texture for OpenGL ES window");
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1132 return;
04af265172f9 Continue working on 2D support in Photon.
Mike Gorchak <lestat@i.com.ua>
parents: 3383
diff changeset
1133 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1134 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1135
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1136 static int
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1137 photon_setdrawcolor(SDL_Renderer * renderer)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1138 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1139 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1140
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1141 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1142 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1143 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1144 SDL_SetError("Photon: can't set draw color for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1145 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1146 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1147
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1148 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1149 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1150 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1151 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1152 PgSetFillColorCx(rdata->gc, PgRGB(renderer->r, renderer->g, renderer->b));
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1153 PgSetStrokeColorCx(rdata->gc, PgRGB(renderer->r, renderer->g, renderer->b));
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1154 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1155 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1156 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1157 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1158 }
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1159
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1160 return 0;
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1161 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1162
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1163 static int
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1164 photon_setdrawblendmode(SDL_Renderer * renderer)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1165 {
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1166 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1167
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1168 /* Check, if it is not initialized */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1169 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1170 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1171 SDL_SetError("Photon: can't set texture blend mode for OpenGL ES window");
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1172 return -1;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1173 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1174
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1175 switch (renderer->blendMode)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1176 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1177 case SDL_BLENDMODE_NONE:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1178 case SDL_BLENDMODE_MASK:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1179 case SDL_BLENDMODE_BLEND:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1180 case SDL_BLENDMODE_ADD:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1181 case SDL_BLENDMODE_MOD:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1182 return 0;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1183 default:
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1184 SDL_Unsupported();
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1185 renderer->blendMode = SDL_BLENDMODE_NONE;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1186 return -1;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1187 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1188
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1189 return 0;
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1190 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1191
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1192 static int
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1193 photon_renderpoint(SDL_Renderer * renderer, int x, int y)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1194 {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1195 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1196
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1197 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1198 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1199 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1200 SDL_SetError("Photon: can't render point in OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1201 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1202 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1203
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1204 /* Enable blending, if requested */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1205 _photon_set_blending(renderer, renderer->blendMode, renderer->a, SDL_PHOTON_DRAW_BLEND);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1206
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1207 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1208 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1209 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1210 PgDrawIPixelCx(rdata->osurfaces[rdata->surface_render_idx], x, y);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1211 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1212 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1213 PgDrawIPixelCx(rdata->pcontexts[rdata->surface_render_idx], x, y);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1214 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1215 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1216 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1217 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1218 }
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1219
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1220 /* Disable blending, if it was enabled */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1221 _photon_reset_blending(renderer, renderer->blendMode, SDL_PHOTON_DRAW_BLEND);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1222
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1223 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1224 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1225
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1226 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1227 photon_renderline(SDL_Renderer * renderer, int x1, int y1, int x2, int y2)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1228 {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1229 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1230
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1231 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1232 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1233 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1234 SDL_SetError("Photon: can't render line in OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1235 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1236 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1237
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1238 /* Enable blending, if requested */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1239 _photon_set_blending(renderer, renderer->blendMode, renderer->a, SDL_PHOTON_DRAW_BLEND);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1240
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1241 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1242 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1243 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1244 PgDrawILineCx(rdata->osurfaces[rdata->surface_render_idx], x1, y1, x2, y2);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1245 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1246 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1247 PgDrawILineCx(rdata->pcontexts[rdata->surface_render_idx], x1, y1, x2, y2);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1248 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1249 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1250 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1251 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1252 }
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1253
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1254 /* Disable blending, if it was enabled */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1255 _photon_reset_blending(renderer, renderer->blendMode, SDL_PHOTON_DRAW_BLEND);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1256
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1257 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1258 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1259
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1260 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1261 photon_renderfill(SDL_Renderer * renderer, const SDL_Rect * rect)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1262 {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1263 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1264
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1265 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1266 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1267 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1268 SDL_SetError("Photon: can't render filled box in OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1269 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1270 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1271
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1272 /* Enable blending, if requested */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1273 _photon_set_blending(renderer, renderer->blendMode, renderer->a, SDL_PHOTON_DRAW_BLEND);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1274
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1275 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1276 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1277 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1278 PgDrawIRectCx(rdata->osurfaces[rdata->surface_render_idx], rect->x, rect->y, rect->w+rect->x-1, rect->h+rect->y-1, Pg_DRAW_FILL);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1279 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1280 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1281 PgDrawIRectCx(rdata->pcontexts[rdata->surface_render_idx], rect->x, rect->y, rect->w+rect->x-1, rect->h+rect->y-1, Pg_DRAW_FILL);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1282 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1283 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1284 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1285 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1286 }
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1287
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1288 /* Disable blending, if it was enabled */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1289 _photon_reset_blending(renderer, renderer->blendMode, SDL_PHOTON_DRAW_BLEND);
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1290
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1291 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1292 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1293
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1294 static int
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1295 photon_rendercopy(SDL_Renderer * renderer, SDL_Texture * texture,
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1296 const SDL_Rect * srcrect, const SDL_Rect * dstrect)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1297 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1298 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1299 SDL_TextureData* tdata=(SDL_TextureData*)texture->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1300
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1301 PhRect_t src_rect;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1302 PhRect_t dst_rect;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1303 PhPoint_t dst_point;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1304
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1305 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1306 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1307 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1308 SDL_SetError("Photon: can't blit textures in OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1309 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1310 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1311
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1312 _photon_set_blending(renderer, texture->blendMode, texture->a, SDL_PHOTON_TEXTURE_BLEND);
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1313
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1314 /* Set source blit area */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1315 src_rect.ul.x = srcrect->x;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1316 src_rect.ul.y = srcrect->y;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1317 src_rect.lr.x = srcrect->x + srcrect->w - 1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1318 src_rect.lr.y = srcrect->y + srcrect->h - 1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1319
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1320 /* Set destination blit area */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1321 dst_rect.ul.x = dstrect->x;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1322 dst_rect.ul.y = dstrect->y;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1323 dst_rect.lr.x = dstrect->x + dstrect->w - 1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1324 dst_rect.lr.y = dstrect->y + dstrect->h - 1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1325
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1326 /* Set destination point */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1327 dst_point.x = dstrect->x;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1328 dst_point.y = dstrect->y;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1329
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1330 /* Do blit */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1331 switch (rdata->surfaces_type)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1332 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1333 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1334 /* two possible combinations */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1335 switch (tdata->surface_type)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1336 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1337 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1338 /* easiest full accelerated combination: offscreen->offscreen */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1339 PgContextBlitCx(rdata->osurfaces[rdata->surface_render_idx], tdata->osurface,
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1340 &src_rect, rdata->osurfaces[rdata->surface_render_idx], &dst_rect);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1341 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1342 case SDL_PHOTON_SURFTYPE_PHIMAGE:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1343 /* not accelerated combination: PhImage->offscreen */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1344 /* scaling is not supported in this method */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1345 PgDrawPhImageRectCxv(rdata->osurfaces[rdata->surface_render_idx], &dst_point,
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1346 tdata->psurface, &src_rect, 0);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1347 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1348 default:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1349 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1350 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1351 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1352 case SDL_PHOTON_SURFTYPE_PHIMAGE:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1353 /* two possible combinations */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1354 switch (tdata->surface_type)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1355 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1356 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1357 /* not supported combination: offscreen->PhImage */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1358 return -1;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1359 case SDL_PHOTON_SURFTYPE_PHIMAGE:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1360 /* not accelerated combination, but fast: PhImage->PhImage */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1361 /* scaling is not supported in this method */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1362 PgDrawPhImageRectCxv(rdata->pcontexts[rdata->surface_render_idx], &dst_point, tdata->psurface, &src_rect, 0);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1363 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1364 default:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1365 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1366 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1367 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1368 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1369
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1370 _photon_reset_blending(renderer, texture->blendMode, SDL_PHOTON_TEXTURE_BLEND);
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1371
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1372 return 0;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1373 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1374
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1375 static void
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1376 photon_renderpresent(SDL_Renderer * renderer)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1377 {
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1378 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1379 SDL_Window *window = window=SDL_GetWindowFromID(renderer->window);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1380 SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1381 PhRect_t src_rect;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1382 PhPoint_t src_point;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1383
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1384 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1385 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1386 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1387 SDL_SetError("Photon: can't render present for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1388 return;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1389 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1390
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1391 /* Flush all undrawn graphics data to surface */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1392 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1393 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1394 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1395 PgFlushCx(rdata->osurfaces[rdata->surface_render_idx]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1396 PgWaitHWIdle();
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1397 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1398 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1399 PmMemFlush(rdata->pcontexts[rdata->surface_render_idx], rdata->psurfaces[rdata->surface_render_idx]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1400 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1401 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1402 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1403 return;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1404 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1405
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1406 PgFFlush(Ph_START_DRAW);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1407 PgSetRegionCx(PhDCGetCurrent(), PtWidgetRid(wdata->window));
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1408
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1409 /* Set blit area */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1410 src_rect.ul.x = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1411 src_rect.ul.y = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1412 src_rect.lr.x = rdata->window_width - 1;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1413 src_rect.lr.y = rdata->window_height - 1;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1414
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1415 src_point.x = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1416 src_point.y = 0;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1417
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1418 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1419 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1420 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1421 PgContextBlit(rdata->osurfaces[rdata->surface_render_idx], &src_rect, NULL, &src_rect);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1422 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1423 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1424 PgDrawPhImagev(&src_point, rdata->psurfaces[rdata->surface_render_idx], 0);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1425 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1426 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1427 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1428 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1429 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1430
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1431 /* finish blit */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1432 PgFFlush(Ph_DONE_DRAW);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1433 PgWaitHWIdle();
3396
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1434
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1435 /* Check if we are using double buffering */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1436 if ((renderer->info.flags & SDL_RENDERER_PRESENTFLIP2) == SDL_RENDERER_PRESENTFLIP2)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1437 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1438 rdata->surface_visible_idx=rdata->surface_render_idx;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1439 rdata->surface_render_idx=(rdata->surface_render_idx + 1) % 2;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1440 }
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1441
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1442 /* Check if we are using triple buffering */
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1443 if ((renderer->info.flags & SDL_RENDERER_PRESENTFLIP3) == SDL_RENDERER_PRESENTFLIP3)
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1444 {
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1445 rdata->surface_visible_idx=rdata->surface_render_idx;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1446 rdata->surface_render_idx=(rdata->surface_render_idx + 1) % 3;
d6b79fc83362 All 2D operations in Photon driver have been finished. The driver is ready to use. There fullscreen modes and YUV textures are rest only.
Mike Gorchak <lestat@i.com.ua>
parents: 3387
diff changeset
1447 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1448 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1449
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1450 static void
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1451 photon_destroytexture(SDL_Renderer * renderer, SDL_Texture * texture)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1452 {
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1453 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1454 SDL_TextureData* tdata=(SDL_TextureData*)texture->driverdata;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1455
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1456 /* Check if partially created texture must be destroyed */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1457 if (tdata==NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1458 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1459 return;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1460 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1461
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1462 /* Check, if it is not initialized */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1463 if (rdata->surfaces_type==SDL_PHOTON_SURFTYPE_UNKNOWN)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1464 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1465 SDL_SetError("Photon: can't destroy texture for OpenGL ES window");
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1466 return;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1467 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1468
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1469 switch (tdata->surface_type)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1470 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1471 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1472 if (tdata->osurface!=NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1473 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1474 PhDCRelease(tdata->osurface);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1475 tdata->osurface = NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1476 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1477 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1478 case SDL_PHOTON_SURFTYPE_PHIMAGE:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1479 if (tdata->pcontext!=NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1480 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1481 PmMemReleaseMC(tdata->pcontext);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1482 tdata->pcontext=NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1483 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1484
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1485 if (tdata->psurface!=NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1486 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1487 if (tdata->psurface->palette!=NULL)
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1488 {
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1489 SDL_free(tdata->psurface->palette);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1490 tdata->psurface->palette=NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1491 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1492 /* Destroy shared memory for PhImage_t */
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1493 PgShmemDestroy(tdata->psurface->image);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1494 tdata->psurface->image=NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1495 SDL_free(tdata->psurface);
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1496 tdata->psurface=NULL;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1497 }
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1498 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1499 default:
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1500 break;
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1501 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1502 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1503
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1504 static void
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1505 photon_destroyrenderer(SDL_Renderer * renderer)
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1506 {
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1507 SDL_RenderData *rdata = (SDL_RenderData *) renderer->driverdata;
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1508 SDL_Window *window = SDL_GetWindowFromID(renderer->window);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1509 SDL_WindowData *wdata = (SDL_WindowData *)window->driverdata;
3139
Sam Lantinga <slouken@libsdl.org>
parents: 3108
diff changeset
1510 uint32_t it;
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1511
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1512 /* Destroy graphics context */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1513 if (rdata->gc!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1514 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1515 PgDestroyGC(rdata->gc);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1516 rdata->gc=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1517 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1518
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1519 switch (rdata->surfaces_type)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1520 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1521 case SDL_PHOTON_SURFTYPE_OFFSCREEN:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1522 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1523 /* Destroy current surfaces */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1524 for (it=0; it<SDL_PHOTON_MAX_SURFACES; it++)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1525 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1526 if (rdata->osurfaces[it] != NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1527 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1528 PhDCRelease(rdata->osurfaces[it]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1529 rdata->osurfaces[it] = NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1530 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1531 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1532 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1533 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1534 case SDL_PHOTON_SURFTYPE_PHIMAGE:
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1535 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1536 /* Destroy current surfaces */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1537 for (it=0; it<SDL_PHOTON_MAX_SURFACES; it++)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1538 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1539 if (rdata->pcontexts[it]!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1540 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1541 PmMemReleaseMC(rdata->pcontexts[it]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1542 rdata->pcontexts[it]=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1543 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1544 if (rdata->psurfaces[it]!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1545 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1546 if (rdata->psurfaces[it]->palette!=NULL)
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1547 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1548 SDL_free(rdata->psurfaces[it]->palette);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1549 rdata->psurfaces[it]->palette=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1550 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1551 /* Destroy shared memory for PhImage_t */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1552 PgShmemDestroy(rdata->psurfaces[it]->image);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1553 rdata->psurfaces[it]->image=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1554 SDL_free(rdata->psurfaces[it]);
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1555 rdata->psurfaces[it]=NULL;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1556 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1557 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1558 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1559 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1560 case SDL_PHOTON_SURFTYPE_UNKNOWN:
3383
90935231e9b6 Continue working on 2D support in Photon
Mike Gorchak <lestat@i.com.ua>
parents: 3375
diff changeset
1561 default:
3375
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1562 {
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1563 /* nothing to do */
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1564 }
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1565 break;
dd105b317335 Continue working on 2D support for Photon/QNX.
Mike Gorchak <lestat@i.com.ua>
parents: 3139
diff changeset
1566 }
3092
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1567 }
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1568
cad1aefa2ed9 Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
1569 /* vi: set ts=4 sw=4 expandtab: */