Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

161 lines
4.9 KiB

//
// BITMAPOBJ.HPP
// Bitmap objects:
//
// Copyright Microsoft 1998-
//
#ifndef __BITMAPOBJ_HPP_
#define __BITMAPOBJ_HPP_
typedef struct COLOREDICON
{
HICON hIcon;
COLORREF color;
} COLORED_ICON;
#define MAX_BITMAP_DATA 8192
UINT GetBitmapDestinationAddress(BitmapDestinationAddress *destinationAddress, PUINT workspaceHandle, PUINT planeID);
#define NonStandard24BitBitmapID "Bitmap24\0"
typedef struct tagBITMAP_DATA
{
//
// Data Buffer
//
BOOL m_bdataCheckpoint;
UINT m_padBits;
UINT m_length;
} BITMAPDATA, *PBITMAPDATA;
class BitmapObj : public T126Obj
{
public:
BitmapObj (BitmapCreatePDU * pbitmapCreatePDU);
void Continue (BitmapCreateContinuePDU * pbitmapCreateContinuePDU);
BitmapObj (UINT);
~BitmapObj( void );
void Draw(HDC hDC = NULL, BOOL bForcedDraw = FALSE, BOOL bPrinting = FALSE);
BOOL CheckReallyHit(LPCRECT pRectHit){return RectangleHit(FALSE, pRectHit);}
void FromScreenArea(LPCRECT lprcScreen);
BOOL HasFillColor(void){return FALSE;}
void SetFillColor(COLORREF cr, BOOL isPresent){}
BOOL GetFillColor(COLORREF * pcr){return FALSE;}
BOOL GetFillColor(RGBTRIPLE* prgb){return FALSE;}
void SetPenColor(COLORREF cr, BOOL isPresent){}
BOOL GetPenColor(COLORREF * pcr) {return FALSE;}
BOOL GetPenColor(RGBTRIPLE* prgb){return FALSE;}
void SetViewHandle(UINT viewHandle){};
void DeleteSavedBitmap(void);
void BitmapEditObj ( BitmapEditPDU * pbitmapEditPDU );
void GetBitmapAttrib(PBitmapCreatePDU_attributes pAttribPDU);
void SetBitmapAttrib(PBitmapCreatePDU_attributes *pattributes);
void AllocateAttrib(PBitmapCreatePDU_attributes *pAttributes);
//
// PDU stuff
//
void CreateBitmapCreatePDU(CWBOBLIST * pCreatePDUList);
void CreateBitmapEditPDU(BitmapEditPDU *pEditPDU);
void CreateBitmapDeletePDU(BitmapDeletePDU *pDeletePDU);
void CreateNonStandard24BitBitmap(BitmapCreatePDU * pBitmapCreatePDU);
LPBITMAPINFOHEADER m_lpbiImage; // local copy of the DIB
LPBITMAPINFOHEADER m_lpBitMask; // Bitmask for transparent bitmaps.
LPBYTE m_lpTransparencyMask;
UINT m_SizeOfTransparencyMask;
BOOL m_fMoreToFollow;
//
// Masks 0x000000007 (BitmapAttribute_viewState_chosen = 1... BitmapAttribute_transparencyMask_chosen = 3)
//
void ChangedViewState(void){m_dwChangedAttrib |= (1 << (BitmapAttribute_viewState_chosen-1)) |
BitmapEditPDU_attributeEdits_present;};
void ChangedZOrder(void){m_dwChangedAttrib |= (1 << (BitmapAttribute_zOrder_chosen-1)) |
BitmapEditPDU_attributeEdits_present;};
void ChangedTransparencyMask(void){m_dwChangedAttrib |= (1 << (BitmapAttribute_transparencyMask_chosen-1)) |
BitmapEditPDU_attributeEdits_present;};
BOOL HasViewStateChanged(void){return (m_dwChangedAttrib & ( 1 << (BitmapAttribute_viewState_chosen-1)));};
BOOL HasZOrderChanged(void){return (m_dwChangedAttrib & ( 1 << (BitmapAttribute_zOrder_chosen-1)));};
BOOL HasTransparencyMaskChanged(void){return (m_dwChangedAttrib & ( 1 << (BitmapAttribute_transparencyMask_chosen-1)));};
//
// Masks 0x000000070 (BitmapEditPDU_scalingEdit_present = 0x10... BitmapEditPDU_anchorPointEdit_present = 0x40)
//
void ChangedAnchorPoint(void){ m_dwChangedAttrib |= BitmapEditPDU_anchorPointEdit_present;}
void ChangedRegionOfInterest(void){ m_dwChangedAttrib |= bitmapRegionOfInterestEdit_present;}
void ChangedScaling(void){ m_dwChangedAttrib |= BitmapEditPDU_scalingEdit_present;}
BOOL HasAnchorPointChanged(void){ return (m_dwChangedAttrib & BitmapEditPDU_anchorPointEdit_present);}
BOOL HasRegionOfInterestChanged(void){ return (m_dwChangedAttrib & bitmapRegionOfInterestEdit_present);}
BOOL HasScalingChanged(void){ return (m_dwChangedAttrib & BitmapEditPDU_scalingEdit_present);}
void ResetAttrib(void){m_dwChangedAttrib = 0;}
void SetAllAttribs(void){m_dwChangedAttrib = 0x07;}
DWORD GetPresentAttribs(void){return ((m_dwChangedAttrib & 0x0F0));}
void ChangedPenThickness(void){};
void OnObjectEdit(void);
void OnObjectDelete(void);
void SendNewObjectToT126Apps(void);
void GetEncodedCreatePDU(ASN1_BUF *pBuf);
//Remote pointer stuff
//
// Device context used for drawing and undrawing the pointer
//
HDC m_hMemDC;
//
// Pointer to the bitmap used to save the data under the pointer
//
HBITMAP m_hSaveBitmap;
//
// Handle of bitmap originally supplied with memDC
//
HBITMAP m_hOldBitmap;
//
// Handle of icon to be used for drawing
//
HICON m_hIcon;
HICON CreateColoredIcon(COLORREF color, LPBITMAPINFOHEADER lpbInfo = NULL, LPBYTE pMaskBits = NULL);
void CreateSaveBitmap();
void UnDraw(void);
BOOL UndrawScreen();
void SetBitmapSize(LONG x, LONG y){m_bitmapSize.x = x; m_bitmapSize.y = y;}
protected:
DWORD m_dwChangedAttrib;
POINT m_bitmapSize; // Width, Height
RECT m_bitmapRegionOfInterest;
UINT m_pixelAspectRatio;
POINT m_scaling;
UINT m_checkPoints;
BITMAPDATA m_bitmapData;
};
#endif // __BITMAPOBJ_HPP_