--- vcl/inc/svids.hrc.orig 2003-11-28 20:42:43.000000000 +0530 +++ vcl/inc/svids.hrc 2003-12-03 17:36:49.000000000 +0530 @@ -151,5 +151,7 @@ #define SV_SHORTCUT_TODOCUMENT 10606 #define SV_SHORTCUT_MENUBAR 10607 +#define IL_SYM_TO_IMAGES_L 1090 +#define IL_SYM_TO_IMAGES_S 1095 #define SV_FUNIT_STRINGS 10700 #endif // _SV_SVIDS_HRC --- vcl/source/src/images.src.orig 2003-11-28 20:59:49.000000000 +0530 +++ vcl/source/src/images.src 2003-12-03 17:40:26.000000000 +0530 @@ -177,3 +177,26 @@ File = "splvarw.bmp"; }; +#define IMG_IDLIST \ + IdList = \ + { \ + SID_OUTLINE_UP; \ + SID_OUTLINE_DOWN; \ + SID_OUTLINE_LEFT; \ + SID_OUTLINE_RIGHT; \ + }; \ + IdCount = { 4 ; }; + +ImageList IL_SYM_TO_IMAGES_L +{ + ImageBitmap = Bitmap { File = "lc_imgs.bmp" ; }; + MaskColor = Color { Red = 0xFFFF ; Green = 0x0000 ; Blue = 0xFFFF ; }; + IMG_IDLIST +}; + +ImageList IL_SYM_TO_IMAGES_S +{ + ImageBitmap = Bitmap { File = "sc_imgs.bmp" ; }; + MaskColor = Color { Red = 0xFFFF ; Green = 0x0000 ; Blue = 0xFFFF ; }; + IMG_IDLIST +}; --- vcl/source/src/makefile.mk.orig 2003-11-28 20:57:24.000000000 +0530 +++ vcl/source/src/makefile.mk 2003-12-03 18:48:49.000000000 +0530 @@ -70,6 +70,7 @@ .INCLUDE : settings.mk +IMGLST_SRS=$(SRS)$/svsrc.srs # --- Files -------------------------------------------------------- SRS1NAME=$(TARGET) --- vcl/inc/image.hxx.orig 2003-11-28 20:40:10.000000000 +0530 +++ vcl/inc/image.hxx 2003-12-03 18:22:51.000000000 +0530 @@ -111,6 +111,8 @@ private: ImplImage* mpImplData; + static const USHORT symbol_to_image_table[]; + static const int table_entry_size; public: Image(); @@ -140,6 +142,7 @@ BOOL operator!=( const Image& rImage ) const { return !(Image::operator==( rImage )); } void ClearCaches(); + static BOOL GetImageForSymbol(const USHORT nSymbolId, const Size objSize, Image& objImage); }; inline BOOL Image::operator!() const --- vcl/source/gdi/image.cxx.orig 2003-11-28 20:47:36.000000000 +0530 +++ vcl/source/gdi/image.cxx 2003-12-03 18:26:31.000000000 +0530 @@ -70,6 +70,13 @@ #include #endif +#ifndef _SV_SVIDS_HRC +#include +#endif +#ifndef _SV_SVDATA_HXX +#include +#endif + #ifndef _SV_RC_H #include #endif @@ -94,6 +101,10 @@ #endif #undef private +#ifndef _SVX_SVXIDS_HRC +#include +#endif + // ======================================================================= DBG_NAME( Image ); @@ -212,6 +223,38 @@ // ======================================================================= +static const USHORT Image::symbol_to_image_table[] = + { + NULL, + NULL, + SID_OUTLINE_UP, + SID_OUTLINE_DOWN, + SID_OUTLINE_LEFT, + SID_OUTLINE_RIGHT + }; + +static const int Image::table_entry_size = sizeof(symbol_to_image_table) / sizeof(symbol_to_image_table[0]); + +static BOOL Image::GetImageForSymbol(const USHORT nSymbolId, const Size objSize, Image& objImage) +{ + if (nSymbolId >= table_entry_size) + return FALSE; + + long lHeight = objSize.getHeight(); + long lWidth = objSize.getWidth(); + long lMin = lHeight < lWidth ? lHeight : lWidth; + + if (lMin < 16) + return FALSE; + + ImageList objImageList = ImageList(ResId(lMin >= 24 ? IL_SYM_TO_IMAGES_L : IL_SYM_TO_IMAGES_S, ImplGetResMgr())); + objImage = objImageList.GetImage(symbol_to_image_table[nSymbolId]); + + return TRUE; +} + +// ----------------------------------------------------------------------- + Image::Image() { DBG_CTOR( Image, NULL ); --- vcl/source/control/button.cxx.orig 2003-11-28 20:49:11.000000000 +0530 +++ vcl/source/control/button.cxx 2003-12-03 18:45:55.000000000 +0530 @@ -3323,7 +3323,20 @@ } if ( RSC_IMAGEBUTTON_SYMBOL & nObjMask ) - SetSymbol( (SymbolType)ReadShortRes() ); + { + SymbolType s = (SymbolType)ReadShortRes(); + + Image objImage; + + if ( Image::GetImageForSymbol(s, GetSizePixel(), objImage) ) + { + SetImage(objImage); + } + else + { + SetSymbol(s); + } + } if ( RSC_IMAGEBUTTON_STATE & nObjMask ) SetState( (TriState)ReadShortRes() );