|
|
//
// T126OBJ.HPP
// Drawing objects: point, openpolyline, closepolyline, ellipse
//
// Copyright Microsoft 1998-
//
void GetDestinationAddress(DrawingDestinationAddress *DestinationAddress, PUINT workspaceHandle, PUINT planeID); void NormalizeRect(LPRECT lprc); void CreateNonStandardPDU(NonStandardParameter * sipdu, LPSTR NonStandardString); void TimeToGetGCCHandles(ULONG numberOfGccHandles);
//
// Member ID
//
#define MAKE_MEMBER_ID(nid,uid) (MAKELONG((nid),(uid)))
#define GET_NODE_ID_FROM_MEMBER_ID(id) (LOWORD(id))
#define GET_USER_ID_FROM_MEMBER_ID(id) (HIWORD(id))
typedef ULONG MEMBER_ID; // loword = node_id, hiword = user_id
extern ULONG g_MyMemberID;
typedef struct { BYTE bCountryCode; BYTE bExtension; WORD wManufacturerCode; BYTE nonstandardString; } T126_VENDORINFO, *PT126_VENDORINFO;
class T126Obj {
public:
virtual ~T126Obj(){};
virtual void Draw(HDC hdc = NULL, BOOL bForcedDraw = FALSE, BOOL bPrinting = FALSE) = 0; virtual void UnDraw(void) = 0; virtual BOOL CheckReallyHit(LPCRECT pRectHit) = 0; BOOL RectangleHit(BOOL borderHit, LPCRECT pRectHit);
virtual void SetPenColor(COLORREF rgb, BOOL isPresent) = 0; virtual BOOL GetPenColor(COLORREF * pcr) = 0; virtual BOOL GetPenColor(RGBTRIPLE * prgb) = 0;
virtual BOOL HasFillColor(void) = 0; virtual void SetFillColor(COLORREF rgb, BOOL isPresent) = 0; virtual BOOL GetFillColor(COLORREF * pcr) = 0; virtual BOOL GetFillColor(RGBTRIPLE * prgb) = 0;
virtual UINT GraphicTool(void) { return m_ToolType;} virtual void SetViewHandle(UINT viewHandle) = 0;
//
// Edit stuff
//
virtual void ChangedAnchorPoint(void) = 0; virtual BOOL HasAnchorPointChanged(void) = 0; virtual void ChangedZOrder(void) = 0; virtual BOOL HasZOrderChanged(void) = 0; virtual void ChangedViewState(void) = 0; virtual BOOL HasViewStateChanged(void) = 0; virtual void ResetAttrib(void) = 0; virtual void SetAllAttribs(void) = 0; virtual void ChangedPenThickness(void) = 0;
virtual void OnObjectEdit(void) = 0; virtual void OnObjectDelete(void) = 0; virtual void SendNewObjectToT126Apps(void) = 0; virtual void GetEncodedCreatePDU(ASN1_BUF *pBuf) = 0; void GotGCCHandle(ULONG gccHandle);
//
// Draw, bitmap, or workspace object
//
UINT GetType(void){return m_T126ObjectType;}; void SetType(UINT type){m_T126ObjectType = type;};
//
// Workspace stuff
//
UINT GetWorkspaceHandle(void) {return m_workspaceHandle;}; void SetWorkspaceHandle(UINT handle) {m_workspaceHandle = handle;};
//
// Get/set plane id
//
void SetPlaneID(UINT planeID){m_planeID = planeID;} UINT GetPlaneID(void) { return m_planeID; }
//
// This object's handle
//
UINT GetThisObjectHandle(void) {return m_thisObjectHandle;}; void SetThisObjectHandle(UINT handle) {m_thisObjectHandle = handle; TRACE_DEBUG(("Object 0x%08x Handle = %d", this, handle));};
//
// Get/set view state
//
void SetViewState(UINT viewState){m_viewState = viewState; ChangedViewState();} UINT GetViewState(void) { return m_viewState;}
//
// Get/set zorder
//
void SetZOrder(ZOrder zorder); ZOrder GetZOrder(void) { return m_zOrder; }
//
// Get/set anchor Point
//
void SetAnchorPoint(LONG x, LONG y); void GetAnchorPoint(LPPOINT lpPoint) { *lpPoint = m_anchorPoint; }
//
// Get/set the bounding rectangle of the graphic object (in logical
// co-ordinates).
//
void SetRect(LPCRECT lprc); void GetRect(LPRECT lprc); void SetRectPts(POINT point1, POINT point2); void SetBoundRectPts(POINT point1, POINT point2); void GetBoundsRect(LPRECT lprc); void SetBoundsRect(LPCRECT lprc); BOOL PointInBounds(POINT point);
//
// Get/set the width of the pen used to draw the object
//
void SetPenThickness(UINT penThickness); UINT GetPenThickness(void) { return m_penThickness;}
//
// Get/set penROP
//
void SetROP(UINT penROP) {m_penROP = penROP;} UINT GetROP(void){return m_penROP;}
void MoveBy(int cx, int cy); void MoveTo(int x, int y);
WBPOSITION m_MyPosition; // Returns this objects position in the list it is located
WBPOSITION GetMyPosition(void){return m_MyPosition;} void SetMyPosition(WBPOSITION pos){m_MyPosition = pos;}
WorkspaceObj * m_pMyWorkspace; WorkspaceObj * GetMyWorkspace(void){return m_pMyWorkspace;} void SetMyWorkspace(WorkspaceObj * pWorkspace){m_pMyWorkspace = pWorkspace;}
void CalculateInvalidationRect(void); void DrawMarker(LPCRECT pMarkerRect ); void DrawRect(void); void SelectDrawingObject(void); void UndrawMarker(LPCRECT pMarkerRect ); void UnselectDrawingObject(void); void MoveBy(LONG x , LONG y);
void CreatedLocally(void){m_bCreatedLocally = TRUE;} BOOL WasCreatedLocally(void){return m_bCreatedLocally;} void ClearCreationFlags(void){m_bCreatedLocally = FALSE;}
void SelectedLocally(void); void SelectedRemotely(void); BOOL WasSelectedLocally(){return m_bSelectedLocally;} BOOL WasSelectedRemotely(){return m_bSelectedRemotely;} BOOL IsSelected(void){return (m_bSelectedLocally || m_bSelectedRemotely);} void ClearSelectionFlags(void){m_bSelectedLocally = FALSE; m_bSelectedRemotely = FALSE;} void EditedLocally(void){m_bEditedLocally = TRUE;} BOOL WasEditedLocally(void){return m_bEditedLocally;} void ClearEditionFlags(void){m_bEditedLocally = FALSE;} void DeletedLocally(void){m_bDeleteLocally = TRUE;} BOOL WasDeletedLocally(void){return m_bDeleteLocally;} void ClearDeletionFlags(void){m_bDeleteLocally = FALSE;} void SetOwnerID(ULONG ID){ m_OwnerID = GET_NODE_ID_FROM_MEMBER_ID(ID); TRACE_DEBUG(("SetOwnerID ID= %x",m_OwnerID)); } ULONG GetOwnerID(void){return m_OwnerID;} BOOL IAmTheOwner(void){return m_OwnerID == GET_NODE_ID_FROM_MEMBER_ID(g_MyMemberID);} void AddToWorkspace();
protected: UINT m_ToolType; // Tool type from UI
BOOL m_bCreatedLocally; BOOL m_bSelectedLocally; BOOL m_bSelectedRemotely; BOOL m_bEditedLocally; BOOL m_bDeleteLocally; RECT m_boundsRect; RECT m_rect;
private: ULONG m_OwnerID; // The owner of this selected object
UINT m_T126ObjectType; UINT m_planeID; // Destination plane in workspace
UINT m_workspaceHandle; // Destination workspace for this object
UINT m_thisObjectHandle; // My own handle assigned by GCC
UINT m_viewState; ZOrder m_zOrder; POINT m_anchorPoint; UINT m_penThickness; UINT m_penROP; };
class DCDWordArray {
public: DCDWordArray(void); ~DCDWordArray(void); void Add(POINT point); BOOL ReallocateArray(void); POINT* GetBuffer(void) { return m_pData; } void SetSize(UINT size); UINT GetSize(void);
POINT* operator[](UINT index){return &(m_pData[index]);} private:
POINT* m_pData; UINT m_Size; UINT m_MaxSize;
};
|