• R/O
  • SSH
  • HTTPS

marathon: コミット


コミットメタ情報

リビジョン374 (tree)
日時2007-07-10 01:47:03
作者hogepiyo

ログメッセージ

*** empty log message ***

変更サマリ

差分

--- marathon/trunk/MapEditorWX/src/MapEditorWX.cpp (revision 373)
+++ marathon/trunk/MapEditorWX/src/MapEditorWX.cpp (revision 374)
@@ -330,6 +330,7 @@
330330 void MapEditorWX::getShapesImage(wxImage* img, int collection, int clut, int index, double illumination)
331331 {
332332 //サーフェイス取得
333+
333334 SDL_Surface* surface = this->getShapesManager()->getSurface(collection, clut, index, illumination);
334335 img->Create(surface->w, surface->h);
335336 SDL_LockSurface(surface);
@@ -343,6 +344,21 @@
343344 }
344345 SDL_UnlockSurface(surface);
345346 SDL_FreeSurface(surface);
347+
348+/*
349+ SDL_Color palette[256];
350+ byte** outp = (byte**)malloc(sizeof(byte*));
351+ SDL_Surface* surface = this->getShapesManager()->getRawSurface(collection, clut, index, illumination,
352+ palette, outp);
353+ img->Create(surface->w, surface->h);
354+ for(int x = 0; x < surface->w; x ++){
355+ for(int y = 0; y < surface->h; y ++){
356+ int pixel = (int)hpl::surface::getpixel(surface, x, y);
357+ img->SetRGB(x, y, palette[pixel].b, palette[pixel].g, palette[pixel].r);
358+ }
359+ }
360+ SDL_FreeSurface(surface);
361+ free(outp);*/
346362 }
347363
348364 //char->wx
--- marathon/trunk/HPLLib/HPLShapesManager.cpp (revision 373)
+++ marathon/trunk/HPLLib/HPLShapesManager.cpp (revision 374)
@@ -25,7 +25,7 @@
2525
2626 static SDL_Surface* createSurface(int flags, int w, int h, int bpp)
2727 {
28- Uint32 rmask, gmask, bmask, amask;
28+ Uint32 rmask, gmask, bmask, amask = 0;
2929 //空のサーフェイスデータの作成
3030 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
3131 rmask = 0xff000000;
@@ -46,7 +46,7 @@
4646
4747 void hpl::shapes::HPLShapesManager::initScreen()
4848 {
49- screenSurface = createSurface(SDL_HWSURFACE,
49+ screenSurface = createSurface(SDL_SWSURFACE,
5050 640, 480, SCREEN_BPP);
5151
5252 struct screen_mode_data scr;
@@ -89,7 +89,29 @@
8989 }
9090 return true;
9191 }
92+
9293 /**
94+ 読み込んだデータをそのまま取得します。
95+ パレットの色番号しか持たないため、パレットが必要
96+ @param palette カラーパレット。外部で用意する
97+ @param outp 生データ。外部で用意する
98+*/
99+SDL_Surface* hpl::shapes::HPLShapesManager::getRawSurface(
100+ int collection, int clut, int index, double illumination,
101+ SDL_Color palette[256], byte **outp)
102+{
103+ //コレクションを別指定。指定する必要がないのでNONE
104+ int excol = NONE;
105+ int col = BUILD_COLLECTION(collection, clut);
106+ int shape = BUILD_DESCRIPTOR(col, index);
107+ if(screenSurface->format->BitsPerPixel == 8 && illumination >= 0){
108+ illumination = -1.0;
109+ }
110+ SDL_Surface* surface = get_shape_surface(shape, excol, outp,
111+ illumination, false, palette);
112+ return surface;
113+}
114+/**
93115 指定したShapesデータを取得します。
94116 @return 失敗時にNULL
95117 */
@@ -104,17 +126,9 @@
104126 }
105127 //TODO
106128 SDL_Color palette[256];
107-
108- //コレクションを別指定。指定する必要がないのでNONE
109- int excol = NONE;
110129 byte **outp = (byte**)malloc(sizeof(byte*));
111- int col = BUILD_COLLECTION(collection, clut);
112- int shape = BUILD_DESCRIPTOR(col, index);
113- if(screenSurface->format->BitsPerPixel == 8 && illumination >= 0){
114- illumination = -1.0;
115- }
116- SDL_Surface* surface = get_shape_surface(shape, excol, outp,
117- illumination, false, palette);
130+ SDL_Surface* surface = this->getRawSurface(collection, clut, index, illumination,
131+ palette, outp);
118132 #ifdef __WXDEBUG__
119133 wxASSERT(surface);
120134 #endif
@@ -134,7 +148,7 @@
134148 surface->format->palette->colors[pixel].g,
135149 surface->format->palette->colors[pixel].b));
136150 */
137- palette[pixel].r, palette[pixel].g, palette[pixel].b));
151+ palette[pixel].b, palette[pixel].g, palette[pixel].r));
138152 }
139153 }
140154 SDL_UnlockSurface(newSurface);
--- marathon/trunk/HPLLib/HPLShapesManager.h (revision 373)
+++ marathon/trunk/HPLLib/HPLShapesManager.h (revision 374)
@@ -37,13 +37,23 @@
3737
3838 private:
3939 void setLoadedShapesFile(bool loaded);
40+
4041 public:
4142 bool isLoadedShapesFile();
43+ /**
44+ 読み込んだデータをそのまま取得します。
45+ パレットの色番号しか持たないため、パレットが必要
46+ @param palette カラーパレット。外部で用意する
47+ @param outp 生データ。外部で用意する
48+ */
49+ SDL_Surface* getRawSurface(int collection, int clut, int index, double illumination,
50+ SDL_Color palette[256], byte **outp);
4251 /**
4352 指定したShapesデータを取得します。
4453 @return 失敗時にNULL
4554 */
4655 SDL_Surface* getSurface(int collection, int clut, int index, double illumination);
56+
4757 /**
4858 Shapesファイルを読み込みます
4959 <en> load Shapes file
旧リポジトリブラウザで表示