// // 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_