1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef _XPMREAD_HXX 25*b1cdbd2cSJim Jagielski #define _XPMREAD_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #ifndef _BITMAP_HXX 28*b1cdbd2cSJim Jagielski #include <vcl/bitmap.hxx> 29*b1cdbd2cSJim Jagielski #endif 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski #ifdef _XPMPRIVATE 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski #define XPMTEMPBUFSIZE 0x00008000 34*b1cdbd2cSJim Jagielski #define XPMSTRINGBUF 0x00008000 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski #define XPMIDENTIFIER 0x00000001 // mnIdentifier includes on of the six phases 37*b1cdbd2cSJim Jagielski #define XPMDEFINITION 0x00000002 // the XPM format consists of 38*b1cdbd2cSJim Jagielski #define XPMVALUES 0x00000003 39*b1cdbd2cSJim Jagielski #define XPMCOLORS 0x00000004 40*b1cdbd2cSJim Jagielski #define XPMPIXELS 0x00000005 41*b1cdbd2cSJim Jagielski #define XPMEXTENSIONS 0x00000006 42*b1cdbd2cSJim Jagielski #define XPMENDEXT 0x00000007 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski #define XPMREMARK 0x00000001 // defines used by mnStatus 46*b1cdbd2cSJim Jagielski #define XPMDOUBLE 0x00000002 47*b1cdbd2cSJim Jagielski #define XPMSTRING 0x00000004 48*b1cdbd2cSJim Jagielski #define XPMFINISHED 0x00000008 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski #define XPMCASESENSITIVE 0x00000001 51*b1cdbd2cSJim Jagielski #define XPMCASENONSENSITIVE 0x00000002 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski // --------- 54*b1cdbd2cSJim Jagielski // - Enums - 55*b1cdbd2cSJim Jagielski // --------- 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski enum ReadState 58*b1cdbd2cSJim Jagielski { 59*b1cdbd2cSJim Jagielski XPMREAD_OK, 60*b1cdbd2cSJim Jagielski XPMREAD_ERROR, 61*b1cdbd2cSJim Jagielski XPMREAD_NEED_MORE 62*b1cdbd2cSJim Jagielski }; 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski // ------------- 65*b1cdbd2cSJim Jagielski // - XPMReader - 66*b1cdbd2cSJim Jagielski // ------------- 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski class BitmapWriteAccess; 69*b1cdbd2cSJim Jagielski class Graphic; 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski class XPMReader : public GraphicReader 72*b1cdbd2cSJim Jagielski { 73*b1cdbd2cSJim Jagielski private: 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski SvStream& mrIStm; 76*b1cdbd2cSJim Jagielski Bitmap maBmp; 77*b1cdbd2cSJim Jagielski BitmapWriteAccess* mpAcc; 78*b1cdbd2cSJim Jagielski Bitmap maMaskBmp; 79*b1cdbd2cSJim Jagielski BitmapWriteAccess* mpMaskAcc; 80*b1cdbd2cSJim Jagielski long mnLastPos; 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski sal_uLong mnWidth; 83*b1cdbd2cSJim Jagielski sal_uLong mnHeight; 84*b1cdbd2cSJim Jagielski sal_uLong mnColors; 85*b1cdbd2cSJim Jagielski sal_uLong mnCpp; // characters per pix 86*b1cdbd2cSJim Jagielski sal_Bool mbTransparent; 87*b1cdbd2cSJim Jagielski sal_Bool mbStatus; 88*b1cdbd2cSJim Jagielski sal_uLong mnStatus; 89*b1cdbd2cSJim Jagielski sal_uLong mnIdentifier; 90*b1cdbd2cSJim Jagielski sal_uInt8 mcThisByte; 91*b1cdbd2cSJim Jagielski sal_uInt8 mcLastByte; 92*b1cdbd2cSJim Jagielski sal_uLong mnTempAvail; 93*b1cdbd2cSJim Jagielski sal_uInt8* mpTempBuf; 94*b1cdbd2cSJim Jagielski sal_uInt8* mpTempPtr; 95*b1cdbd2cSJim Jagielski sal_uInt8* mpFastColorTable; 96*b1cdbd2cSJim Jagielski sal_uInt8* mpColMap; 97*b1cdbd2cSJim Jagielski sal_uLong mnStringSize; 98*b1cdbd2cSJim Jagielski sal_uInt8* mpStringBuf; 99*b1cdbd2cSJim Jagielski sal_uLong mnParaSize; 100*b1cdbd2cSJim Jagielski sal_uInt8* mpPara; 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski sal_Bool ImplGetString( void ); 103*b1cdbd2cSJim Jagielski sal_Bool ImplGetColor( sal_uLong ); 104*b1cdbd2cSJim Jagielski sal_Bool ImplGetScanLine( sal_uLong ); 105*b1cdbd2cSJim Jagielski sal_Bool ImplGetColSub( sal_uInt8* ); 106*b1cdbd2cSJim Jagielski sal_Bool ImplGetColKey( sal_uInt8 ); 107*b1cdbd2cSJim Jagielski void ImplGetRGBHex( sal_uInt8*, sal_uLong ); 108*b1cdbd2cSJim Jagielski sal_Bool ImplGetPara( sal_uLong numb ); 109*b1cdbd2cSJim Jagielski sal_Bool ImplCompare( sal_uInt8*, sal_uInt8*, sal_uLong, sal_uLong nmode = XPMCASENONSENSITIVE ); 110*b1cdbd2cSJim Jagielski sal_uLong ImplGetULONG( sal_uLong nPara ); 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski public: 113*b1cdbd2cSJim Jagielski XPMReader( SvStream& rStm ); 114*b1cdbd2cSJim Jagielski virtual ~XPMReader(); 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski ReadState ReadXPM( Graphic& rGraphic ); 117*b1cdbd2cSJim Jagielski }; 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski #endif // _XPMPRIVATE 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski // ------------- 122*b1cdbd2cSJim Jagielski // - ImportXPM - 123*b1cdbd2cSJim Jagielski // ------------- 124*b1cdbd2cSJim Jagielski 125*b1cdbd2cSJim Jagielski sal_Bool ImportXPM( SvStream& rStream, Graphic& rGraphic ); 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski #endif // _XPMREAD_HXX 128