wg_resources.cpp

00001 // wg_resources.cpp
00002 //
00003 // wgui resources
00004 //
00005 //
00006 // Copyright (c) 2002-2004 Rob Wiskow
00007 // rob-dev@boxedchaos.com
00008 //
00009 // This library is free software; you can redistribute it and/or
00010 // modify it under the terms of the GNU Lesser General Public
00011 // License as published by the Free Software Foundation; either
00012 // version 2.1 of the License, or (at your option) any later version.
00013 //
00014 // This library is distributed in the hope that it will be useful,
00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00017 // Lesser General Public License for more details.
00018 //
00019 // You should have received a copy of the GNU Lesser General Public
00020 // License along with this library; if not, write to the Free Software
00021 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
00022 //
00023 
00024 
00025 #include "wgui_include_config.h"
00026 #include "wg_resources.h"
00027 #include "wg_error.h"
00028 #include "wg_painter.h"
00029 #include "wutil_debug.h"
00030 #include "wg_application.h"
00031 #include <list>
00032 
00033 
00034 namespace wGui
00035 {
00036 
00037 
00038 CwgBitmapResourceHandle::CwgBitmapResourceHandle(EwgResourceId resId) :
00039      CBitmapResourceHandle(resId)
00040 {
00041      if (m_BitmapMap.find(m_ResourceId) == m_BitmapMap.end())
00042      {
00043           const CRGBColor T = COLOR_TRANSPARENT;
00044           const CRGBColor B = COLOR_BLACK;
00045 
00046           switch (m_ResourceId)
00047           {
00048                case NULL_RESOURCE_ID:
00049                     m_BitmapMap[NULL_RESOURCE_ID] = 0;
00050                     break;
00051                case WGRES_UP_ARROW_BITMAP:
00052                {
00053                     CRGBColor buf[] = {T, T, T, T, T, T, T, T,
00054                                         T, T, T, T, T, T, T, T,
00055                                         T, T, T, T, T, T, T, T,
00056                                         T, T, T, B, B, T, T, T,
00057                                         T, T, B, B, B, B, T, T,
00058                                         T, B, B, B, B, B, B, T,
00059                                         T, T, T, T, T, T, T, T,
00060                                         T, T, T, T, T, T, T, T};
00061                     m_BitmapMap[m_ResourceId] = DrawBitmap(buf, sizeof(buf) / sizeof(CRGBColor), 8, 8);
00062                     break;
00063                }
00064                case WGRES_DOWN_ARROW_BITMAP:
00065                {
00066                     CRGBColor buf[] = {T, T, T, T, T, T, T, T,
00067                                         T, T, T, T, T, T, T, T,
00068                                         T, B, B, B, B, B, B, T,
00069                                         T, T, B, B, B, B, T, T,
00070                                         T, T, T, B, B, T, T, T,
00071                                         T, T, T, T, T, T, T, T,
00072                                         T, T, T, T, T, T, T, T,
00073                                         T, T, T, T, T, T, T, T};
00074                     m_BitmapMap[m_ResourceId] = DrawBitmap(buf, sizeof(buf) / sizeof(CRGBColor), 8, 8);
00075                     break;
00076                }
00077                case WGRES_LEFT_ARROW_BITMAP:
00078                {
00079                     CRGBColor buf[] = {T, T, T, T, T, T, T, T,
00080                                         T, T, T, T, T, B, T, T,
00081                                         T, T, T, T, B, B, T, T,
00082                                         T, T, T, B, B, B, T, T,
00083                                         T, T, T, B, B, B, T, T,
00084                                         T, T, T, T, B, B, T, T,
00085                                         T, T, T, T, T, B, T, T,
00086                                         T, T, T, T, T, T, T, T};
00087                     m_BitmapMap[m_ResourceId] = DrawBitmap(buf, sizeof(buf) / sizeof(CRGBColor), 8, 8);
00088                     break;
00089                }
00090                case WGRES_RIGHT_ARROW_BITMAP:
00091                {
00092                     CRGBColor buf[] = {T, T, T, T, T, T, T, T,
00093                                         T, T, B, T, T, T, T, T,
00094                                         T, T, B, B, T, T, T, T,
00095                                         T, T, B, B, B, T, T, T,
00096                                         T, T, B, B, B, T, T, T,
00097                                         T, T, B, B, T, T, T, T,
00098                                         T, T, B, T, T, T, T, T,
00099                                         T, T, T, T, T, T, T, T};
00100                     m_BitmapMap[m_ResourceId] = DrawBitmap(buf, sizeof(buf) / sizeof(CRGBColor), 8, 8);
00101                     break;
00102                }
00103                case WGRES_X_BITMAP:
00104                {
00105                     CRGBColor buf[] = {T, T, T, T, T, T, T, T,
00106                                         T, B, T, T, T, T, B, T,
00107                                         T, T, B, T, T, B, T, T,
00108                                         T, T, T, B, B, T, T, T,
00109                                         T, T, T, B, B, T, T, T,
00110                                         T, T, B, T, T, B, T, T,
00111                                         T, B, T, T, T, T, B, T,
00112                                         T, T, T, T, T, T, T, T};
00113                     m_BitmapMap[m_ResourceId] = DrawBitmap(buf, sizeof(buf) / sizeof(CRGBColor), 8, 8);
00114                     break;
00115                }
00116                case WGRES_MAXIMIZE_UNMAXED_BITMAP:
00117                {
00118                     CRGBColor buf[] = {T, B, B, B, B, B, B, T,
00119                                         T, B, B, B, B, B, B, T,
00120                                         T, B, T, T, T, T, B, T,
00121                                         T, B, T, T, T, T, B, T,
00122                                         T, B, T, T, T, T, B, T,
00123                                         T, B, T, T, T, T, B, T,
00124                                         T, B, B, B, B, B, B, T,
00125                                         T, T, T, T, T, T, T, T};
00126                     m_BitmapMap[m_ResourceId] = DrawBitmap(buf, sizeof(buf) / sizeof(CRGBColor), 8, 8);
00127                     break;
00128                }
00129                case WGRES_MAXIMIZE_MAXED_BITMAP:
00130                {
00131                     CRGBColor buf[] = {T, T, T, B, B, B, B, B,
00132                                         T, T, T, B, B, B, B, B,
00133                                         T, T, T, B, T, T, T, B,
00134                                         B, B, B, B, B, T, T, B,
00135                                         B, B, B, B, B, T, T, B,
00136                                         B, T, T, T, B, B, B, B,
00137                                         B, T, T, T, B, T, T, T,
00138                                         B, B, B, B, B, T, T, T};
00139                     m_BitmapMap[m_ResourceId] = DrawBitmap(buf, sizeof(buf) / sizeof(CRGBColor), 8, 8);
00140                     break;
00141                }
00142                case WGRES_MINIMIZE_BITMAP:
00143                {
00144                     CRGBColor buf[] = {T, T, T, T, T, T, T, T,
00145                                         T, T, T, T, T, T, T, T,
00146                                         T, T, T, T, T, T, T, T,
00147                                         T, T, T, T, T, T, T, T,
00148                                         T, T, T, T, T, T, T, T,
00149                                         T, B, B, B, B, B, B, T,
00150                                         T, B, B, B, B, B, B, T,
00151                                         T, T, T, T, T, T, T, T};
00152                     m_BitmapMap[m_ResourceId] = DrawBitmap(buf, sizeof(buf) / sizeof(CRGBColor), 8, 8);
00153                     break;
00154                }
00155                case INVALID_RESOURCE_ID:
00156                case AUTO_CREATE_RESOURCE_ID:
00157                default:
00158                     throw(Wg_Ex_App(L"CwgBitmapResourceHandle::AllocateResource : Invalid Resource ID."));
00159                     break;
00160           }
00161           CResourceHandle TempHandle(m_ResourceId);
00162           CApplication::Instance()->AddToResourcePool(TempHandle);
00163      }
00164 }
00165 
00166 
00167 SDL_Surface* CwgBitmapResourceHandle::DrawBitmap(CRGBColor Data[], int iDataLength, int iWidth, int iHeight) const
00168 {
00169      SDL_Surface* pBitmap = SDL_CreateRGBSurface(SDL_SWSURFACE | SDL_SRCALPHA, iWidth, iHeight, 
00170           CApplication::Instance()->GetBitsPerPixel(), 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000);
00171      CPainter Painter(pBitmap, CPainter::PAINT_REPLACE);
00172      for (int iRow = 0; iRow < iHeight; ++iRow)
00173      {
00174           for (int iCol = 0; iCol < iWidth; ++iCol)
00175           {
00176                int iIndex = iRow * iWidth + iCol;
00177                if (iIndex < iDataLength)
00178                {
00179                     Painter.DrawPoint(CPoint(iCol, iRow), Data[iRow * iWidth + iCol]);
00180                }
00181           }
00182      }
00183 
00184      return pBitmap;
00185 }
00186 
00187 
00188 CwgStringResourceHandle::CwgStringResourceHandle(EwgResourceId resId) :
00189      CStringResourceHandle(resId)
00190 {
00191      if (m_StringMap.find(m_ResourceId) == m_StringMap.end())
00192      {
00193           switch (m_ResourceId)
00194           {
00195                case NULL_RESOURCE_ID:
00196                     m_StringMap[m_ResourceId] = L"";
00197                     break;
00198                case WGRES_WGUI_STRING:
00199                     m_StringMap[m_ResourceId] = L"wGui";
00200                     break;
00201                case WGRES_VERSION_STRING:
00202                     m_StringMap[m_ResourceId] = stdex::ToWString(VERSION);
00203                     break;
00204                case INVALID_RESOURCE_ID:
00205                case AUTO_CREATE_RESOURCE_ID:
00206                default:
00207                     throw(Wg_Ex_App(L"CwgBitmapResourceHandle::AllocateResource : Invalid Resource ID."));
00208                     break;
00209           }
00210           CResourceHandle TempHandle(m_ResourceId);
00211           CApplication::Instance()->AddToResourcePool(TempHandle);
00212      }
00213 }
00214 
00215 
00216 CwgCursorResourceHandle::CwgCursorResourceHandle(EwgResourceId resId) :
00217      CCursorResourceHandle(resId)
00218 {
00219      if (m_SDLCursorMap.find(m_ResourceId) == m_SDLCursorMap.end())
00220      {
00221           switch (m_ResourceId)
00222           {
00223                case NULL_RESOURCE_ID:
00224                     m_SDLCursorMap[m_ResourceId] = 0;
00225                     break;
00226                case WGRES_POINTER_CURSOR:
00227                {
00228                     char buf[] = {X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00229                                    X,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00230                                    X,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00231                                    X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00232                                    X,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00233                                    X,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00234                                    X,M,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00235                                    X,M,M,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00236                                    X,M,M,M,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00237                                    X,M,M,M,M,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00238                                    X,M,M,M,M,M,X,X,X,X,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00239                                    X,M,M,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00240                                    X,M,X,O,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00241                                    X,X,O,O,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00242                                    X,O,O,O,O,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00243                                    O,O,O,O,O,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00244                                    O,O,O,O,O,O,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00245                                    O,O,O,O,O,O,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00246                                    O,O,O,O,O,O,O,X,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00247                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00248                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00249                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00250                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00251                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00252                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00253                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00254                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00255                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00256                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00257                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00258                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00259                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O};
00260                     m_SDLCursorMap[m_ResourceId] = CreateCursor(buf, sizeof(buf) / sizeof(char), 32, 32, 0, 0);
00261                     break;
00262                }
00263                case WGRES_IBEAM_CURSOR:
00264                {
00265                     char buf[] = {D,D,D,O,D,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00266                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00267                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00268                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00269                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00270                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00271                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00272                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00273                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00274                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00275                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00276                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00277                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00278                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00279                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00280                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00281                                    O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00282                                    D,D,D,O,D,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00283                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00284                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00285                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00286                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00287                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00288                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00289                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00290                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00291                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00292                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00293                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00294                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00295                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00296                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O};
00297                     m_SDLCursorMap[m_ResourceId] = CreateCursor(buf, sizeof(buf) / sizeof(char), 32, 32, 3, 8);
00298                     break;
00299                }
00300                case WGRES_WAIT_CURSOR:
00301                {
00302                     char buf[] = {X,X,X,X,X,X,X,X,X,X,X,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00303                                    X,M,M,M,M,M,M,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00304                                    X,M,M,M,M,M,M,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00305                                    X,M,M,M,M,M,M,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00306                                    O,X,X,M,X,M,X,M,X,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00307                                    O,O,X,X,M,X,M,X,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00308                                    O,O,O,X,X,M,X,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00309                                    O,O,O,O,X,X,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00310                                    O,O,O,O,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00311                                    O,O,O,X,M,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00312                                    O,O,X,M,M,M,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00313                                    O,X,M,M,M,X,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00314                                    X,M,M,M,M,M,M,M,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00315                                    X,M,M,M,M,X,M,X,M,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00316                                    X,M,X,M,X,M,X,M,X,M,M,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00317                                    X,X,X,X,X,X,X,X,X,X,X,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00318                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00319                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00320                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00321                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00322                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00323                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00324                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00325                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00326                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00327                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00328                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00329                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00330                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00331                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00332                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00333                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O};
00334                     m_SDLCursorMap[m_ResourceId] = CreateCursor(buf, sizeof(buf) / sizeof(char), 32, 32, 0, 0);
00335                     break;
00336                }
00337                case WGRES_MOVE_CURSOR:
00338                {
00339                     char buf[] = {
00340                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00341                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00342                                    O,O,O,O,O,O,O,O,D,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00343                                    O,O,O,O,O,O,O,D,D,D,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00344                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00345                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00346                                    O,O,O,O,D,O,O,O,O,D,O,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00347                                    O,O,O,D,D,O,O,O,O,D,O,O,O,O,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00348                                    O,O,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00349                                    O,O,O,D,D,O,O,O,O,D,O,O,O,O,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00350                                    O,O,O,O,D,O,O,O,O,D,O,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00351                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,X,X,X,X,X,X,O,O,O,O,O,O,O,O,
00352                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,X,M,M,M,M,X,O,O,O,O,O,O,O,O,
00353                                    O,O,O,O,O,O,O,D,D,D,D,D,O,O,O,O,O,O,X,M,M,M,X,O,O,O,O,O,O,O,O,O,
00354                                    O,O,O,O,O,O,O,O,D,D,D,O,O,O,O,O,O,O,X,M,M,M,M,X,O,O,O,O,O,O,O,O,
00355                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,X,M,X,M,M,M,X,O,O,O,O,O,O,O,
00356                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,X,X,O,X,M,M,X,O,O,O,O,O,O,O,
00357                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,X,X,O,O,O,O,O,O,O,O,
00358                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00359                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00360                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00361                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00362                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00363                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00364                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00365                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00366                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00367                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00368                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00369                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00370                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00371                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O};
00372                     m_SDLCursorMap[m_ResourceId] = CreateCursor(buf, sizeof(buf) / sizeof(char), 32, 32, 9, 9);
00373                     break;
00374                }
00375                case WGRES_ZOOM_CURSOR:
00376                {
00377                     char buf[] = {
00378                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00379                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00380                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00381                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00382                                    O,O,O,O,O,O,O,O,D,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00383                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00384                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00385                                    O,O,O,O,O,D,O,O,O,D,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00386                                    O,O,O,D,D,D,O,O,O,D,O,O,O,D,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00387                                    O,O,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00388                                    O,O,O,D,D,O,O,O,O,D,O,O,O,O,D,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00389                                    O,O,O,O,D,O,O,O,O,D,O,O,O,O,D,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00390                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,X,X,X,X,X,X,O,O,O,O,O,O,O,O,
00391                                    O,O,O,O,O,O,D,D,D,D,D,D,D,O,O,O,O,O,X,M,M,M,M,X,O,O,O,O,O,O,O,O,
00392                                    O,O,O,O,O,O,O,D,D,D,D,D,O,O,O,O,O,O,X,M,M,M,X,O,O,O,O,O,O,O,O,O,
00393                                    O,O,O,O,O,O,O,O,D,D,D,O,O,O,O,O,O,O,X,M,M,M,M,X,O,O,O,O,O,O,O,O,
00394                                    O,O,O,O,O,O,O,O,O,D,O,O,O,O,O,O,O,O,X,M,X,M,M,M,X,O,O,O,O,O,O,O,
00395                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,X,X,O,X,M,M,X,O,O,O,O,O,O,O,
00396                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,X,X,O,O,O,O,O,O,O,O,
00397                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00398                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00399                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00400                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00401                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00402                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00403                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00404                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00405                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00406                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00407                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00408                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
00409                                    O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O};
00410                     m_SDLCursorMap[m_ResourceId] = CreateCursor(buf, sizeof(buf) / sizeof(char), 32, 32, 9, 9);
00411                     break;
00412                }
00413 
00414                case INVALID_RESOURCE_ID:
00415                case AUTO_CREATE_RESOURCE_ID:
00416                default:
00417                     throw(Wg_Ex_App(L"CwgBitmapResourceHandle::AllocateResource : Invalid Resource ID."));
00418                     break;
00419           }
00420           CResourceHandle TempHandle(m_ResourceId);
00421           CApplication::Instance()->AddToResourcePool(TempHandle);
00422      }
00423 }
00424 
00425 
00426 SDL_Cursor* CwgCursorResourceHandle::CreateCursor(const char DataIn[], int iDataLength, int iWidth, int iHeight, int iXHotSpot, int iYHotSpot) const
00427 {
00428      if (iWidth % 8)
00429      {
00430           throw(Wg_Ex_App(L"CwgCursorResourceHandle::CreateCursor : Cursors must be multiples of 8 bits wide."));
00431      }
00432 
00433      int iDataSize = iWidth * iHeight / 8;
00434      Uint8* pData = new Uint8[iDataSize];
00435      Uint8* pMask = new Uint8[iDataSize];
00436      int i = -1;
00437 
00438      for (int iRow = 0; iRow < iHeight; ++iRow)
00439      {
00440           for (int iCol = 0; iCol < iWidth; ++iCol)
00441           {
00442                int iIndex = iCol + iRow * iWidth;
00443                if (iIndex < iDataLength)
00444                {
00445                     if (iCol % 8)
00446                     {
00447                          pData[i] <<= 1;
00448                          pMask[i] <<= 1;
00449                     }
00450                     else
00451                     {
00452                          ++i;
00453                          pData[i] = 0;
00454                          pMask[i] = 0;
00455                     }
00456                     switch (DataIn[iIndex])
00457                     {
00458                     case X:
00459                          pData[i] |= 0x01;
00460                          pMask[i] |= 0x01;
00461                          break;
00462                     case D:
00463                          pData[i] |= 0x01;
00464                          break;
00465                     case M:
00466                          pMask[i] |= 0x01;
00467                          break;
00468                     case O:
00469                          break;
00470                     }
00471                }
00472           }
00473      }
00474 
00475      return SDL_CreateCursor(pData, pMask, iWidth, iHeight, iXHotSpot, iYHotSpot);
00476 }
00477 
00478 }
00479 

Generated on Wed May 16 23:11:26 2007 for wGui by  doxygen 1.5.1