249 lines
6.7 KiB
C++
249 lines
6.7 KiB
C++
|
//
|
||
|
// 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;
|
||
|
|
||
|
|
||
|
|
||
|
};
|
||
|
|