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.
|
|
//
// TEXTOBJ.HPP
// Text object
//
// Copyright Microsoft 1998-
//
#ifndef __TEXTOBJ_HPP_
#define __TEXTOBJ_HPP_
#include <common.h>
#define NonStandardTextID "Text2\0"
void GetTextDestinationAddress(SINonStandardPDU *destinationAddress, PUINT workspaceHandle, PUINT planeID);
//
// Definitions for text objects
//
#define LAST_LINE -1
#define LAST_CHAR -2
#ifdef _DEBUG
#define DBG_UNINIT -1
#endif // _DEBUG
//
// Definitions for debug stuff
//
typedef struct tagVARIABLE_STRING_HEADER { ULONG len; // length of this structure + string length
POINT start; // starting X(column) Y(line) inside the previous text
}VARIABLE_STRING_HEADER;
typedef struct tagVARIABLE_STRING { VARIABLE_STRING_HEADER header; CHAR string; } VARIABLE_STRING;
typedef struct tagTEXTPDU_HEADER { UINT nonStandardPDU; UINT textHandle; UINT workspaceHandle; }TEXTPDU_HEADER;
typedef struct tagTEXTPDU_ATTRIB { DWORD attributesFlag; // flag with the attributes that changed
COLORREF textPenColor; COLORREF textFillColor; UINT textViewState; UINT textZOrder; POINT textAnchorPoint; LOGFONT textFont; UINT numberOfLines; VARIABLE_STRING textString; } TEXTPDU_ATTRIB;
typedef struct tagMSTextPDU { TEXTPDU_HEADER header; TEXTPDU_ATTRIB attrib; }MSTextPDU;
typedef struct tagMSTextDeletePDU { TEXTPDU_HEADER header; }MSTextDeletePDU;
class TextObj : public T126Obj {
// Friend declaration for text editing
friend class WbTextEditor;
public:
TextObj (void); void TextEditObj (TEXTPDU_ATTRIB* pEditPDU );
~TextObj( void );
void Draw(HDC hDC = NULL, BOOL bForcedDraw = FALSE, BOOL bPrinting = FALSE); void UnDraw(void); BOOL CheckReallyHit(LPCRECT pRectHit){return RectangleHit(FALSE, pRectHit);} void SetViewHandle(UINT viewHandle){};
//
// PDU stuff
//
void CreateTextPDU(ASN1octetstring_t*, UINT); void SetTextAttrib(TEXTPDU_ATTRIB * pattributes); void GetTextAttrib(TEXTPDU_ATTRIB * pattributes);
//
// Get/set pen Color
//
void SetPenColor(COLORREF rgb, BOOL isPresent); BOOL GetPenColor(COLORREF * pcr); 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);
//
// Set the text of the object
//
void SetText(TCHAR * strText); void SetText(const StrArray& strTextArray);
//
// Get/Set the font for drawing the text
//
virtual void SetFont(HFONT hFont); virtual void SetFont(LOGFONT *pLogFont, BOOL bReCalc=TRUE ); HFONT GetFont(void) {return m_hFont;}; HFONT GetFontThumb(void){return m_hFontThumb;}
//
// Get the UI tool from a drawing pdu
//
void SetUIToolType(void);
//
// Mask 0x0000001F
//
void ChangedPenColor(void){m_dwChangedAttrib |= 0x00000001;} void ChangedFillColor(void){m_dwChangedAttrib |= 0x00000002;} void ChangedViewState(void){m_dwChangedAttrib |= 0x00000004;} void ChangedZOrder(void){m_dwChangedAttrib |= 0x00000008;} void ChangedAnchorPoint(void) { m_dwChangedAttrib |= 0x00000010;} void ChangedFont(void) { m_dwChangedAttrib |= 0x00000020;} void ChangedText(void) { m_dwChangedAttrib |= 0x00000040;}
BOOL HasPenColorChanged(void){return (m_dwChangedAttrib & 0x00000001);} BOOL HasFillColorChanged(void){return (m_dwChangedAttrib & 0x00000002);} BOOL HasViewStateChanged(void){return (m_dwChangedAttrib & 0x00000004);} BOOL HasZOrderChanged(void){return (m_dwChangedAttrib & 0x00000008);} BOOL HasAnchorPointChanged(void) { return (m_dwChangedAttrib & 0x00000010);} BOOL HasFontChanged(void) { return m_dwChangedAttrib & 0x00000020;} BOOL HasTextChanged(void) { return m_dwChangedAttrib & 0x00000040;} DWORD GetPresentAttribs(void){return (m_dwChangedAttrib & 0x0000007F);} void ResetAttrib(void){m_dwChangedAttrib = 0;} void SetAllAttribs(void){m_dwChangedAttrib = 0x0000007F;}
void ChangedPenThickness(void){};
void CalculateBoundsRect(void); void CalculateRect(int iStartX, int iStartY, int iStopX, int iStopY, LPRECT lprcResult); ABC GetTextABC( LPCTSTR pText, int iStartX, int iStopX); void GetTextRectangle(int iStartY, int iStartX, int iStopX, LPRECT lprc);
void SendTextPDU(UINT choice); void OnObjectEdit(void); void OnObjectDelete(void); void SendNewObjectToT126Apps(void); void GetEncodedCreatePDU(ASN1_BUF *pBuf);
TEXTMETRIC m_textMetrics;
//
// Array for storing text
//
StrArray strTextArray; HFONT m_hFont;
protected:
DWORD m_dwChangedAttrib; BOOL m_bIsPenColorPresent; BOOL m_bIsFillColorPresent; RGBTRIPLE m_penColor; RGBTRIPLE m_fillColor;
//
// Font details
//
HFONT m_hFontThumb; BOOL m_bFirstSetFontCall; LONG m_nKerningOffset;
};
#endif // __TEXTOBJ_HPP_
|