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.
|
|
//
// DRAWOBJ.HPP
// Drawing objects: point, openpolyline, closepolyline, ellipse
//
// Copyright Microsoft 1998-
//
#ifndef __DRAWOBJ_HPP_
#define __DRAWOBJ_HPP_
//
// Maximum number of points in a freehand object
//
#define MAX_FREEHAND_POINTS 65535
#define MAX_POINT_LIST_VALUES 255
BOOL EllipseHit(LPCRECT lpEllipseRect, BOOL bBorderHit, UINT uPenWidth, LPCRECT lpHitRect ); void GetDrawingDestinationAddress(DrawingDestinationAddress *destinationAddress, PUINT workspaceHandle, PUINT planeID);
typedef struct tagCOLOR_PRESENT { BOOL m_bIsPresent; RGBTRIPLE m_color; }COLOR;
class DrawObj : public T126Obj {
public:
DCDWordArray * m_points; // List of consecutive points including anchor point
DrawObj (UINT drawingType, UINT toolType); DrawObj ( DrawingCreatePDU * pdrawingCreatePDU ); void DrawEditObj ( DrawingEditPDU * pdrawingEditPDU );
~DrawObj( void );
void Draw(HDC hDC = NULL, BOOL bForcedDraw = FALSE, BOOL bPrinting = FALSE); BOOL PolyLineHit(LPCRECT pRectHit); BOOL CheckReallyHit(LPCRECT pRectHit);
//
// PDU stuff
//
void CreateDrawingCreatePDU(DrawingCreatePDU *); void CreateDrawingEditPDU(DrawingEditPDU *); void CreateDrawingDeletePDU(DrawingDeletePDU*); void SetDrawingAttrib(PDrawingCreatePDU_attributes *attributes); void AllocateAttrib(PDrawingCreatePDU_attributes *pattributes);
//
// Get/Set drawing type
//
void SetDrawingType(UINT type){m_drawingType = type;}; UINT GetDrawingType(void) {return m_drawingType;}
//
// Get/set the pen style
//
void SetLineStyle(UINT lineStyle){m_lineStyle = lineStyle; ChangedLineStyle();}; UINT GetLineStyle(void) { return m_lineStyle;}
//
// Get/set pen Color
//
void SetPenColor(COLORREF rgb, BOOL isPresent); BOOL GetPenColor(COLORREF * rgb); BOOL GetPenColor(RGBTRIPLE* rgb);
//
// Get/set fill Color
//
BOOL HasFillColor(void){return m_bIsFillColorPresent;} void SetFillColor(COLORREF rgb, BOOL isPresent); BOOL GetFillColor(COLORREF * rgb); BOOL GetFillColor(RGBTRIPLE* rgb);
//
//
// Get/set pen nib
//
void SetPenNib(UINT nib){m_penNib = nib;ChangedPenNib();}; UINT GetPenNib(void){return m_penNib;}
//
// Get/set highlight
//
void SetHighlight(BOOL bHighlight){m_bHighlight = bHighlight; ChangedHighlight();}; BOOL GetHighlight(void){return m_bHighlight;}
BOOL AddPoint(POINT point); void AddPointToBounds(int x, int y);
// JOSEF add functionality
void SetEnd(POINT){}; void UnDraw(void); void SetViewHandle(UINT viewHandle){};
//
// Get/set flag telling that this drawing is completed
//
void SetIsCompleted(BOOL isCompleted) {m_isDrawingCompleted = isCompleted;} BOOL GetIsCompleted(void){return m_isDrawingCompleted;}
//
// Get the UI tool from a drawing pdu
//
void SetUIToolType(void);
//
// Mask 0x000008FF (penColor_chosen = 1... DrawingAttribute_zOrder_chosen = 8)
//
void ChangedPenColor(void){m_dwChangedAttrib |= (1 << (penColor_chosen-1)) | (DrawingEditPDU_attributeEdits_present << 4);} void ChangedFillColor(void){m_dwChangedAttrib |= (1 << (fillColor_chosen-1)) | (DrawingEditPDU_attributeEdits_present << 4);} void ChangedPenThickness(void){m_dwChangedAttrib |= (1 << (penThickness_chosen-1)) | (DrawingEditPDU_attributeEdits_present << 4);} void ChangedPenNib(void){m_dwChangedAttrib |= (1 << (penNib_chosen-1)) | (DrawingEditPDU_attributeEdits_present << 4);} void ChangedLineStyle(void){m_dwChangedAttrib |= (1 << (lineStyle_chosen-1)) | (DrawingEditPDU_attributeEdits_present << 4);} void ChangedHighlight(void){m_dwChangedAttrib |= (1 << (highlight_chosen-1)) | (DrawingEditPDU_attributeEdits_present << 4);} void ChangedViewState(void){m_dwChangedAttrib |= (1 << (DrawingAttribute_viewState_chosen-1)) | (DrawingEditPDU_attributeEdits_present << 4);} void ChangedZOrder(void){m_dwChangedAttrib |= (1 << (DrawingAttribute_zOrder_chosen-1)) | (DrawingEditPDU_attributeEdits_present << 4);}
BOOL HasPenColorChanged(void){return (m_dwChangedAttrib & (1 << (penColor_chosen - 1)));} BOOL HasFillColorChanged(void){return (m_dwChangedAttrib & (1 << (fillColor_chosen - 1)));} BOOL HasPenThicknessChanged(void){return (m_dwChangedAttrib & (1 << (penThickness_chosen - 1)));} BOOL HasPenNibChanged(void){return (m_dwChangedAttrib & (1 << (penNib_chosen - 1)));} BOOL HasLineStyleChanged(void){return (m_dwChangedAttrib & (1 << (lineStyle_chosen - 1)));} BOOL HasHighlightChanged(void){return (m_dwChangedAttrib & (1 << (highlight_chosen - 1)));} BOOL HasViewStateChanged(void){return (m_dwChangedAttrib & (1 << (DrawingAttribute_viewState_chosen - 1)));} BOOL HasZOrderChanged(void){return (m_dwChangedAttrib & (1 << (DrawingAttribute_zOrder_chosen - 1)));}
//
// Mask 0x000000700 bits (pointListEdits_present = 0x10... DrawingEditPDU_anchorPointEdit_present = 0x40)
//
void ChangedPointList(void) { m_dwChangedAttrib |= pointListEdits_present << 4;} void ChangedRotation(void) { m_dwChangedAttrib |= rotationEdit_present << 4;} void ChangedAnchorPoint(void) { m_dwChangedAttrib |= DrawingEditPDU_anchorPointEdit_present << 4;}
BOOL HasPointListChanged(void) { return (m_dwChangedAttrib & pointListEdits_present << 4);} BOOL HasRotationChanged(void) { return (m_dwChangedAttrib & rotationEdit_present << 4);} BOOL HasAnchorPointChanged(void) { return (m_dwChangedAttrib & DrawingEditPDU_anchorPointEdit_present << 4);} DWORD GetPresentAttribs(void){return ((m_dwChangedAttrib & 0x0F00)>> 4);} void ResetAttrib(void){m_dwChangedAttrib = 0;} void SetAllAttribs(void){m_dwChangedAttrib = 0x08FF;}
void OnObjectEdit(void); void OnObjectDelete(void); void SendNewObjectToT126Apps(void); void GetEncodedCreatePDU(ASN1_BUF *pBuf);
protected:
//
// T126 Drawing and UI specific
//
DWORD m_dwChangedAttrib; UINT m_drawingType; UINT m_lineStyle; BOOL m_bIsPenColorPresent; BOOL m_bIsFillColorPresent; RGBTRIPLE m_penColor; RGBTRIPLE m_fillColor; UINT m_penNib; BOOL m_bHighlight; BOOL m_isDrawingCompleted;
UINT GetSubsequentPoints(UINT choice, POINT * initialPoint, PointList * pointList); void GetDrawingAttrib(PVOID pAttribPDU);
};
#endif // __DRAWOBJ_HPP_
|