68#define DEF_FRAME_BG_COLOR "#c0c0c0"
69#define DEF_FRAME_CURSOR ""
70#define DEF_BUTTON_FG "black"
71#define DEF_BUTTON_HIGHLIGHT_BG "#d9d9d9"
72#define DEF_BUTTON_HIGHLIGHT "black"
141 for (i = 0; i <
N_COLOR; ++i) {
214 fMenu->Connect(
"Activated(Int_t)",
"TGHtml",
this,
"HandleMenu(Int_t)");
216 fVsb->SetAccelerated();
217 fHsb->SetAccelerated();
236 for (i = 0; i <
N_FONT; i++) {
336 if (rc != 0)
return kFALSE;
348 if (iStart.
fP && savePtr) {
468 if (z && strcmp(z,
name) == 0) {
501 return (
const char *)obj->
GetName();
548 int clipwinH, clipwinW;
550 int redoSelection = 0;
636 color = highlightColorPtr;
638 color = highlightBgColorPtr;
640 _DrawFocusHighlight(color);
658 clipwinW =
fCanvas->GetWidth();
659 clipwinH =
fCanvas->GetHeight();
681 if (w > 0 &&
h > 0) {
728 int top, bottom, left, right;
732 bottom = top +
fCanvas->GetHeight();
734 right = left +
fCanvas->GetWidth();
736 for (pElem = pImage->
fPList; pElem; pElem = pElem->
fINext) {
739 if (imageTop > bottom || imageTop + pElem->
fH < top
740 || pElem->
fX > right || pElem->
fX + pElem->
fW < left)
continue;
790 if (bottom < 0)
return;
791 if (top > (
int)
fCanvas->GetHeight())
return;
792 if (right < 0)
return;
793 if (left > (
int)
fCanvas->GetWidth())
return;
813 int right =
x + w + 1;
814 int bottom =
y +
h + 1;
815 if (bottom < 0)
return;
816 if (top > (
int)
fCanvas->GetHeight())
return;
817 if (right < 0)
return;
818 if (left > (
int)
fCanvas->GetWidth())
return;
890 clipHeight =
fCanvas->GetHeight();
892 if (
y < clipHeight) {
908 for (p =
fPFirst; p; p = fPNext) {
922 for (i = 0; i <
N_COLOR; ++i) {
1013 if (pImage->
fTimer == t) {
1055 if (color < 0 || color >=
N_COLOR) color = 0;
1059 if (p->
fIndex == 0)
continue;
1060 if ((font < 0 || p->fFont == font) && p->
fColor == color) {
1160 if (p->
fFrame == 0)
continue;
1161 if (p->
fY < vy + vh && p->
fY + p->
fH > vy &&
1162 p->
fX < vx + vw && p->
fX + p->
fW > vx) {
1163 if ((
x > p->
fX) && (
y > p->
fY) && (
x < (p->
fX + p->
fW)) &&
1164 (
y < (p->
fY + p->
fH)) ) {
1179 eventSt.
fType =
event->fType;
1180 eventSt.
fWindow =
event->fWindow;
1181 eventSt.
fTime =
event->fTime;
1184 eventSt.
fXRoot =
event->fXRoot;
1185 eventSt.
fYRoot =
event->fYRoot;
1186 eventSt.
fCode =
event->fCode;
1187 eventSt.
fState =
event->fState;
1188 eventSt.
fWidth =
event->fWidth;
1189 eventSt.
fHeight =
event->fHeight;
1190 eventSt.
fCount =
event->fCount;
1192 eventSt.
fHandle =
event->fHandle;
1193 eventSt.
fFormat =
event->fFormat;
1194 eventSt.
fUser[0] =
event->fUser[0];
1195 eventSt.
fUser[1] =
event->fUser[1];
1196 eventSt.
fUser[2] =
event->fUser[2];
1197 eventSt.
fUser[3] =
event->fUser[3];
1198 eventSt.
fUser[4] =
event->fUser[4];
1200 event->
fX, event->
fY, eventSt.
fX,
1201 eventSt.
fY, childdum);
1204 const char *val = pr->
MarkupArg(
"value", 0);
1210 b->HandleButton(&eventSt);
1225 if ((!was && now) || (was && !now)) {
1236 if ((!was && now) || (was && !now))
1248 eventSt.
fUser[0] = childdum;
1292 Emit(
"ButtonClicked(char*,char*)", args);
1306 Emit(
"CheckToggled(char*,Bool_t,char*)", args);
1319 Emit(
"RadioChanged(char*,char*)", args);
1332 Emit(
"InputSelected(char*,char*)", args);
1340 Emit(
"SubmitClicked(char*)", val);
1350 static const char *inputFileTypes[] = {
1351 "HTML files",
"*.html",
1358 if (idy < actual.
Sizeof()) {
1359 shortname = actual(idy, actual.
Sizeof());
1409 sprintf(ix,
"begin");
1420 fMenu->EndMenu(dummy);
1468 if (iFont < 0) iFont = 0;
1484 if (
fAFont[iFont] == 0) {
1486 const char *familyStr =
"";
1497 case 0: familyStr =
"times -%d";
break;
1498 case 1: familyStr =
"times -%d bold";
break;
1499 case 2: familyStr =
"times -%d italic";
break;
1500 case 3: familyStr =
"times -%d bold italic";
break;
1501 case 4: familyStr =
"courier -%d";
break;
1502 case 5: familyStr =
"courier -%d bold";
break;
1503 case 6: familyStr =
"courier -%d italic";
break;
1504 case 7: familyStr =
"courier -%d bold italic";
break;
1507 case 0: familyStr =
"helvetica -%d";
break;
1508 case 1: familyStr =
"helvetica -%d bold";
break;
1509 case 2: familyStr =
"helvetica -%d italic";
break;
1510 case 3: familyStr =
"helvetica -%d bold italic";
break;
1511 case 4: familyStr =
"courier -%d";
break;
1512 case 5: familyStr =
"courier -%d bold";
break;
1513 case 6: familyStr =
"courier -%d italic";
break;
1514 case 7: familyStr =
"courier -%d bold italic";
break;
1515 default: familyStr =
"helvetica -14";
CANT_HAPPEN;
1520 case 1:
size = 6+finc;
break;
1521 case 2:
size = 10+finc;
break;
1522 case 3:
size = 12+finc;
break;
1523 case 4:
size = 14+finc;
break;
1524 case 5:
size = 20+finc;
break;
1525 case 6:
size = 24+finc;
break;
1526 case 7:
size = 30+finc;
break;
1531 case 1:
size = 8;
break;
1532 case 2:
size = 10;
break;
1533 case 3:
size = 12;
break;
1534 case 4:
size = 14;
break;
1535 case 5:
size = 16;
break;
1536 case 6:
size = 18;
break;
1537 case 7:
size = 24;
break;
1542 if (iFamily < 4)
size += 2;
1550 if (
fAFont[iFont] == 0) {
1551 fprintf(stderr,
"TGHtml: could not get font \"%s\", trying fixed\n",
1555 if (
fAFont[iFont] == 0 ){
1556 fprintf(stderr,
"TGHtml: could not get font \"fixed\", trying "
1557 "\"helvetica -12\"\n");
1565 if (toFree)
fClient->FreeFont(toFree);
1579 return ((left + ip[0]) <=
x && (left + ip[2]) >=
x &&
1580 (top + ip[1]) <=
y && (top + ip[3]) >=
y);
1582 int dx = left + ip[0] -
x;
1583 int dy = top + ip[1] -
y;
1584 return (dx * dx + dy * dy <= ip[2] * ip[2]);
1601 if (zb && *zb !=
'r')
return 0;
1602 if (z && !strcmp(z,
name))
return p;
1620 return x*
x +
y*
y + z*z;
1641 if (
n == 6 ||
n == 3 ||
n == 9 ||
n == 12) {
1642 for (i = 0; i <
n; i++) {
1643 if (!isxdigit(zColor[i]))
break;
1646 snprintf(zAltColor, 15,
"#%s", zColor);
1648 strlcpy(zAltColor, zColor,
sizeof(zAltColor));
1669#define MAX_COLOR 65535
1670#define MAX(A,B) ((A)<(B)?(B):(A))
1671#define MIN(A,B) ((A)<(B)?(A):(B))
1683 z = 0.28 * p->
fBlue;
1693 if (
fIDark[iBgColor] == 0) {
1710 val.
fRed = (
unsigned short) (pRef->
fRed * 0.6);
1712 val.
fBlue = (
unsigned short) (pRef->
fBlue * 0.6);
1717 return fIDark[iBgColor] - 1;
1741 val.
fRed = (
unsigned short) (pRef->
fRed * 0.9);
1743 val.
fBlue = (
unsigned short) (pRef->
fBlue * 0.9);
1773# define COLOR_MASK 0xf800
1779 for (i = 0; i <
N_COLOR; i++) {
1814 for (i = 1; i <
N_COLOR; i++) {
1816 if (dist < closestDist) {
1846 if (target) *target = pElem->
MarkupArg(
"target", 0);
1856 switch (pElem->
fType) {
1862 if (target) *target = pElem->
MarkupArg(
"target", 0);
1889#define HGCo(dir) (pb2 && pb2->dir) ? pBlock->dir * 100 / pb2->dir : 0
1890 coords[0] =
HGCo(fLeft);
1891 coords[1] =
HGCo(fTop);
1892 coords[3] =
HGCo(fRight);
1893 coords[4] =
HGCo(fBottom);
1895 coords[0] = pBlock->
fLeft;
1896 coords[1] = pBlock->
fTop;
1897 coords[2] = pBlock->
fRight;
1914 if (z && (strcmp(z, value) == 0))
return p;
1931 int needUpdate = forceUpdate;
2059 if (!(sBegin.
fP && sEnd.
fP))
return kTRUE;
2061 if (bi < ei || (bi == ei && sBegin.
fI <= sEnd.
fI)) {
2126 <<
");"<< std::endl;
2127 if (option && strstr(option,
"keep_names"))
2128 out <<
" " <<
GetName() <<
"->SetName(\"" <<
GetName() <<
"\");" << std::endl;
2131 out <<
" " <<
GetName() <<
"->ChangeBackground(" <<
fCanvas->GetBackground() <<
");" << std::endl;
2138 out <<
" " <<
"FILE *f = fopen(\"" << fn.
Data() <<
"\", \"r\");" << std::endl;
2139 out <<
" " <<
"if (f) {" << std::endl;
2140 out <<
" " <<
GetName() <<
"->Clear();" << std::endl;
2141 out <<
" " <<
GetName() <<
"->Layout();" << std::endl;
2142 out <<
" " <<
GetName() <<
"->SetBaseUri(\"\");" << std::endl;
2143 out <<
" " <<
"char *buf = (char *)calloc(4096, sizeof(char));" << std::endl;
2144 out <<
" " <<
"while (fgets(buf, 4096, f)) {" << std::endl;
2145 out <<
" " <<
GetName() <<
"->ParseText(buf);" << std::endl;
2146 out <<
" " <<
"}" << std::endl;
2147 out <<
" " <<
"free(buf);" << std::endl;
2148 out <<
" " <<
"fclose(f);" << std::endl;
2149 out <<
" " <<
"}" << std::endl;
2150 out <<
" " <<
GetName() <<
"->Layout();" << std::endl;
const Mask_t kGCForeground
const Mask_t kFocusChangeMask
const Mask_t kButtonPressMask
const Mask_t kExposureMask
Handle_t Pixmap_t
Pixmap handle.
const Mask_t kPointerMotionMask
Handle_t GContext_t
Graphics context handle.
const Mask_t kButtonReleaseMask
const Mask_t kGCGraphicsExposures
Handle_t Window_t
Window handle.
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
int Int_t
Signed integer 4 bytes (int).
long Longptr_t
Integer large enough to hold a pointer (platform-dependent).
int Ssiz_t
String size (currently int).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
const char Option_t
Option string (const char).
#define INPUT_TYPE_Button
#define DEF_HTML_EXPORT_SEL
#define DEF_HTML_INSERT_OFF_TIME
#define HTML_RELIEF_SUNKEN
#define INPUT_TYPE_Submit
#define HTML_RELIEF_RAISED
#define N_PREDEFINED_COLOR
#define DEF_HTML_INSERT_ON_TIME
#define DEF_HTML_SELECTION_COLOR
#define INPUT_TYPE_Password
#define DEF_HTML_UNVISITED
#define INPUT_TYPE_Checkbox
#define INPUT_TYPE_Select
char * StrDup(const char *str)
Duplicate the string str.
A combobox (also known as a drop down listbox) allows the selection of one item out of a list of item...
This class creates a file selection dialog.
char * fFilename
selected file name
const char ** fFileTypes
file types used to filter selectable files
Encapsulate fonts used in the GUI system.
FontH_t GetFontHandle() const
void AddInput(UInt_t emask)
Add events specified in the emask to the events the frame should handle.
void RemoveInput(UInt_t emask)
Remove events specified in emask from the events the frame should handle.
static Pixel_t GetWhitePixel()
Get white pixel value.
virtual const char * MarkupArg(const char *, const char *)
TGHtmlImageMarkup * fINext
TGHtmlImageMarkup * fPList
const char * MarkupArg(const char *tag, const char *zDefault) override
Lookup an argument in the given markup with the name given.
int GetLightShadowColor(int iBgColor)
Given that the background color is iBgColor, figure out an appropriate color for the bright part of t...
TGHtmlElement * GetMap(const char *name)
Returns html map element.
int IsDarkColor(ColorStruct_t *p)
Check to see if the given color is too dark to be easily distinguished from black.
Bool_t HandleButton(Event_t *event) override
Handle mouse button event.
void RedrawArea(int left, int top, int right, int bottom)
If any part of the screen needs to be redrawn, then call this routine with the values of a box (in wi...
int GotoAnchor(const char *name)
Go to anchor position.
int SetInsert(const char *insIx)
Set the position of the insertion cursor.
virtual void RadioChanged(const char *name, const char *val)
Emit RadioChanged() signal.
TGHtmlElement * fLoEndPtr
TGHtmlBlock * fPSelStartBlock
const char * GetHref(int x, int y, const char **target=nullptr)
This routine searches for a hyperlink beneath the coordinates x,y and returns a pointer to the HREF f...
int IsLightColor(ColorStruct_t *p)
Check to see if the given color is too light to be easily distinguished from white.
void TokenizerAppend(const char *text)
Append text to the tokenizer engine.
void AddStyle(TGHtmlElement *p)
This routine adds information to the input texts that doesn't change when the display is resized or w...
virtual void MouseDown(const char *uri)
Bool_t ItemLayout() override
Layout html widget.
void ScheduleRedraw()
Make sure that a call to the Redraw() routine has been queued.
void LostSelection()
Clear selection.
virtual TGFont * GetFont(int iFont)
The rendering and layout routines should call this routine in order to get a font structure.
ColorStruct_t * fApColor[32]
void UpdateInsert()
Recompute the position of the insertion cursor based on the position in fIns.
TGHtmlElement * fLastSized
void LayoutDoc()
Advance the layout as far as possible.
void BlockDraw(TGHtmlBlock *pBlock, Drawable_t wid, int left, int top, int width, int height, Pixmap_t pixmap)
Display a single HtmlBlock. This is where all the drawing happens.
void IndexToBlockIndex(SHtmlIndex_t sIndex, TGHtmlBlock **ppBlock, int *piIndex)
Convert an Element-based index into a Block-based index.
int GetColorByName(const char *zColor)
This routine returns an index between 0 and N_COLOR-1 which indicates which ColorStruct_t structure i...
void DrawImage(TGHtmlImageMarkup *image, Drawable_t wid, int left, int top, int right, int bottom)
Draw all or part of an image.
TGHtmlInput * fFormElemLast
void AnimateImage(TGHtmlImage *image)
TGImage *img = image->image;.
Bool_t HandleTimer(TTimer *timer) override
Handle timer event.
virtual void InputSelected(const char *name, const char *val)
Emit Selected() signal.
virtual void CheckToggled(const char *name, Bool_t on, const char *val)
Emit CheckToggled() signal.
Bool_t HandleMotion(Event_t *event) override
handle mouse motion events
int SelectionSet(const char *startIx, const char *endIx)
Set selection.
void UpdateSelectionDisplay()
The fPSelStartBlock and fPSelEndBlock values have been changed.
Bool_t HandleFocusChange(Event_t *event) override
Handle focus change event.
TGHtmlBlock * fPSelEndBlock
ColorStruct_t * fSelectionColor
void SaveFileAs()
Save file.
void FormBlocks()
Add additional blocks to the block list in order to cover all elements on the element list.
virtual void ButtonClicked(const char *name, const char *val)
Emit ButtonClicked() signal.
ColorStruct_t * fHighlightBgColorPtr
void SetRuleRelief(int relief)
Sets relief mode of html rule.
SHtmlStyleStack_t * fStyleStack
ColorStruct_t * fNewLinkColor
TGHtmlListStart * fInnerList
void RedrawText(int y)
Call this routine to cause all of the rendered HTML at the virtual canvas coordinate of Y and beyond ...
virtual void MouseOver(const char *uri)
Bool_t HandleRadioButton(TGHtmlInput *p)
Handle radio button event.
TGHtmlInput * GetInputElement(int x, int y)
This routine searches for a hyperlink beneath the coordinates x,y and returns a pointer to the HREF f...
int ParseText(char *text, const char *index=nullptr)
Appends (or insert at the specified position) the given HTML text to the end of any HTML text that ma...
void UpdateSelection(int forceUpdate)
Given the selection end-points in fSelBegin and fSelEnd, recompute pSelBeginBlock and fPSelEndBlock,...
void SetBaseUri(const char *uri)
Sets base URI.
void DeleteControls()
Delete all input controls.
ColorStruct_t * AllocColorByValue(ColorStruct_t *color)
Allocate system color by value.
TGHtmlInput * fFirstInput
void UpdateBackgroundStart() override
Start background update.
~TGHtml() override
HTML widget destructor.
void SavePrimitive(std::ostream &out, Option_t *="") override
Save a html widget as a C++ statement(s) on output stream out.
void SetTableRelief(int relief)
Sets relief mode of html table.
ColorStruct_t * AllocColor(const char *name)
Allocate system color by name.
void HClear()
Erase all data from the HTML widget. Bring it back to an empty screen.
ColorStruct_t * fHighlightColorPtr
GContext_t GetAnyGC()
Retrieve any valid GC.
TGHtmlBlock * fFirstBlock
void RedrawBlock(TGHtmlBlock *p)
Redraw the TGHtmlBlock given.
const char * GetUid(const char *string)
Given a string, this procedure returns a unique identifier for the string.
void Redraw()
This routine is invoked in order to redraw all or part of the HTML widget.
int GetLinkColor(const char *zURL)
For the markup <a href=XXX>, find out if the URL has been visited before or not.
TGHtmlAnchor * fAnchorStart
int GetColorByValue(ColorStruct_t *pRef)
Find a color integer for the color whose color components are given by pRef.
char fFontValid[(71+7)/8]
const char * GetBaseUri() const
SHtmlStyle_t PopStyleStack(int tag)
Pop a rendering style off of the stack.
void FreeColor(ColorStruct_t *color)
Free system color.
void ComputeVirtualSize()
Computes virtual size of html area.
int TokenNumber(TGHtmlElement *p)
Return the token number for the given TGHtmlElement.
TGHtmlElement * AttrElem(const char *name, char *value)
Returns html element matching attribute name and value.
GContext_t GetGC(int color, int font)
Return a GC from the cache.
virtual char * ResolveUri(const char *uri)
This function resolves the specified URI and returns the result in a newly allocated string.
int InArea(TGHtmlMapArea *p, int left, int top, int x, int y)
Only support rect and circles for now.
void PushStyleStack(int tag, SHtmlStyle_t style)
Push a new rendering style onto the stack.
TGHtmlElement * fNextPlaced
TGHtmlLayoutContext fLayoutContext
void RedrawEverything()
Call this routine to force the entire widget to be redrawn.
virtual void SubmitClicked(const char *val)
Emit SubmitClicked() signal.
void UnderlineLinks(int onoff)
Set/reset html links underline.
SHtmlStyle_t GetCurrentStyle()
Get the current rendering style.
void DrawRegion(Int_t x, Int_t y, UInt_t w, UInt_t h) override
Draw region defined by [x,y] [w,h].
int MapControls()
Map any control that should be visible according to the current scroll position.
void Clear(Option_t *="") override
Erase all HTML from this widget and clear the screen.
const char * GetText() const
void ClearGcCache()
Clear the cache of GCs.
int GetIndex(const char *zIndex, TGHtmlElement **ppToken, int *pIndex)
This routine decodes a complete index specification.
ColorStruct_t * fOldLinkColor
TGHtmlForm * fLoFormStart
TGHtmlInput * fFormElemStart
int ElementCoords(TGHtmlElement *p, int i, int pct, int *coords)
Return coordinates of item.
Bool_t HandleIdleEvent(TGIdleHandler *i) override
Handles idle event.
void HandleMenu(Int_t)
Handle context menu entries events.
float ColorDistance(ColorStruct_t *pA, ColorStruct_t *pB)
Compute the squared distance between two colors.
void FlashCursor()
Flash the insertion cursor.
int GetDarkShadowColor(int iBgColor)
Given that the background color is iBgColor, figure out an appropriate color for the dark part of a 3...
TGHtml(const TGWindow *p, int w, int h, int id=-1)
HTML Widget constructor.
Bool_t HandleHtmlInput(TGHtmlInput *pr, Event_t *event)
Handle html input (button, checkbox, ...) event.
SHtmlExtensions_t * fExts
void ResetLayoutContext()
Reset the main layout context in the main widget.
A listbox is a box, possibly with scrollbar, containing entries.
TGClient * fClient
Connection to display server.
Handle_t fId
X11/Win32 Window identifier.
A TGTextEntry is a one line text input widget.
virtual void SetFocus()
Set focus to this text entry.
A TGText is a multi line text buffer.
Bool_t Save(const char *fn)
Save text buffer to file fn.
TGHScrollBar * fHsb
horizontal scrollbar
void SetBackgroundColor(Pixel_t) override
Set background color of the canvas frame.
TGDimension fVirtualSize
the current virtual window size
TGVScrollBar * fVsb
vertical scrollbar
Bool_t HandleButton(Event_t *event) override
handle button
TGLongPosition fVisible
position of visible region
TGView(const TGView &)=delete
TGLongPosition fScrollVal
scroll value
TGViewFrame * fCanvas
frame containing the text
void SetBackgroundPixmap(Pixmap_t p) override
Set backgound pixmap.
void Clear(Option_t *="") override
Clear view.
virtual void DrawRegion(Int_t x, Int_t y, UInt_t width, UInt_t height)
Draw region.
TGGC fWhiteGC
graphics context used for scrolling generates GraphicsExposure events
virtual void ScrollToPosition(TGLongPosition newPos)
Scroll the canvas to pos.
ROOT GUI Window base class.
const TGWindow * fParent
Parent window.
const char * GetName() const override
Return unique name, used in SavePrimitive methods.
THashTable implements a hash table to store TObject's.
Collectable string class.
const char * GetName() const override
Returns name of object.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
const char * Data() const
Ssiz_t Last(char c) const
Find last occurrence of a character c.
virtual Int_t Sizeof() const
Returns size string will occupy on I/O buffer.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Handles synchronous and a-synchronous timer events.
ULong_t fPixel
color pixel value (index in color table)
UShort_t fRed
red component (0..65535)
UShort_t fGreen
green component (0..65535)
UShort_t fBlue
blue component (0..65535)
UShort_t fMask
mask telling which color components are valid
EGEventType fType
of event (see EGEventType)
Int_t fY
pointer x, y coordinates in event window
Bool_t fSendEvent
true if event came from SendEvent
Handle_t fHandle
general resource handle (used for atoms or windows)
Int_t fFormat
Next fields only used by kClientMessageEvent.
UInt_t fHeight
width and height of exposed area
Int_t fCount
if non-zero, at least this many more exposes
Window_t fWindow
window reported event is relative to
UInt_t fState
key or button mask
Int_t fYRoot
coordinates relative to root
Time_t fTime
time event event occurred in ms
UInt_t fCode
key or button code
Longptr_t fUser[5]
5 longs can be used by client message events NOTE: only [0], [1] and [2] may be used.
Graphics context structure.
Mask_t fMask
bit mask specifying which fields are valid
Bool_t fGraphicsExposures
boolean, should exposures be generated
ULong_t fForeground
foreground pixel
FontH_t fFont
default text font for text operations
SHtmlStyleStack_t * fPNext