46 Warning(
"TGGC",
"dash list can have only up to %ld elements",
77 Error(
"TGGC",
"TGClient not yet initialized, should never happen");
97 gClient->GetGCPool()->fList->Add(
this);
106 gClient->GetGCPool()->ForceFreeGC(
this);
121 gClient->GetGCPool()->fList->Add(
this);
151 switch (bit & values->
fMask) {
220 Warning(
"UpdateValues",
"dash list can have only up to %ld elements",
240 gClient->GetGCPool()->fList->Add(
this);
492 Warning(
"SetDashList",
"dash list can have only up to %ld elements",
530 if (
mask.Length() == 0)
mask =
"kGCFunction";
531 else mask +=
" | kGCFunction";
534 if (
mask.Length() == 0)
mask =
"kGCPlaneMask";
535 else mask +=
" | kGCPlaneMask";
538 if (
mask.Length() == 0)
mask =
"kGCForeground";
539 else mask +=
" | kGCForeground";
542 if (
mask.Length() == 0)
mask =
"kGCBackground";
543 else mask +=
" | kGCBackground";
546 if (
mask.Length() == 0)
mask =
"kGCLineWidth";
547 else mask +=
" | kGCLineWidth";
550 if (
mask.Length() == 0)
mask =
"kGCLineStyle";
551 else mask +=
" | kGCLineStyle";
554 if (
mask.Length() == 0)
mask =
"kGCCapStyle";
555 else mask +=
" | kGCCapStyle";
558 if (
mask.Length() == 0)
mask =
"kGCJoinStyle";
559 else mask +=
" | kGCJoinStyle";
562 if (
mask.Length() == 0)
mask =
"kGCFillStyle";
563 else mask +=
" | kGCFillStyle";
566 if (
mask.Length() == 0)
mask =
"kGCFillRule";
567 else mask +=
" | kGCFillRule";
570 if (
mask.Length() == 0)
mask =
"kGCTile";
571 else mask +=
" | kGCTile";
574 if (
mask.Length() == 0)
mask =
"kGCStipple";
575 else mask +=
" | kGCStipple";
578 if (
mask.Length() == 0)
mask =
"kGCTileStipXOrigin";
579 else mask +=
" | kGCTileStipXOrigin";
582 if (
mask.Length() == 0)
mask =
"kGCTileStipYOrigin";
583 else mask +=
" | kGCTileStipYOrigin";
586 if (
mask.Length() == 0)
mask =
"kGCFont";
587 else mask +=
" | kGCFont";
590 if (
mask.Length() == 0)
mask =
"kGCSubwindowMode";
591 else mask +=
" | kGCSubwindowMode";
594 if (
mask.Length() == 0)
mask =
"kGCGraphicsExposures";
595 else mask +=
" | kGCGraphicsExposures";
598 if (
mask.Length() == 0)
mask =
"kGCClipXOrigin";
599 else mask +=
" | kGCClipXOrigin";
602 if (
mask.Length() == 0)
mask =
"kGCClipYOrigin";
603 else mask +=
" | kGCClipYOrigin";
606 if (
mask.Length() == 0)
mask =
"kGCClipMask";
607 else mask +=
" | kGCClipMask";
610 if (
mask.Length() == 0)
mask =
"kGCDashOffset";
611 else mask +=
" | kGCDashOffset";
614 if (
mask.Length() == 0)
mask =
"kGCDashList";
615 else mask +=
" | kGCDashList";
618 if (
mask.Length() == 0)
mask =
"kGCArcMode";
619 else mask +=
" | kGCArcMode";
634 out <<
" TGGC *uGC; // will reflect user GC changes" << std::endl;
639 const char *colorname;
646 out <<
" // graphics context changes" << std::endl;
648 out <<
" GCValues_t " << valname.
Data() <<
";" << std::endl;
649 out <<
" " << valname.
Data() <<
".fMask = " <<
GetMaskString() <<
";" << std::endl;
651 for (
Mask_t bit = 1; bit <= fmask; bit <<= 1) {
652 switch (bit & fmask) {
657 out <<
" " << valname.
Data() <<
".fFunction = ";
666 out <<
"kGXandReverse";
672 out <<
"kGXandInverted";
693 out <<
"kGXorReverse";
696 out <<
"kGXcopyInverted";
699 out <<
"kGXorInverted";
708 out <<
";" << std::endl;
711 out <<
" " << valname.
Data() <<
".fPlaneMask = " <<
GetPlaneMask() <<
";" << std::endl;
716 out <<
" gClient->GetColorByName(" << quote << colorname << quote
717 <<
"," << valname.
Data() <<
".fForeground);" << std::endl;
722 out <<
" gClient->GetColorByName(" << quote << colorname << quote
723 <<
"," << valname.
Data() <<
".fBackground);" << std::endl;
726 out <<
" " << valname.
Data() <<
".fLineWidth = " <<
GetLineWidth() <<
";" << std::endl;
729 out <<
" " << valname.
Data() <<
".fLineStyle = ";
735 out <<
"kLineOnOffDash";
738 out <<
"kLineDoubleDash";
741 out <<
";" << std::endl;
744 out <<
" " << valname.
Data() <<
".fCapStyle = ";
747 out <<
"kCapNotLast";
756 out <<
"kCapProjecting";
759 out <<
";" << std::endl;
762 out <<
" " << valname.
Data() <<
".fJoinStyle = ";
774 out <<
";" << std::endl;
777 out <<
" " << valname.
Data() <<
".fFillStyle = ";
786 out <<
"kFillStippled";
789 out <<
"kFillOpaqueStippled";
792 out <<
";" << std::endl;
795 out <<
" " << valname.
Data() <<
".fFillRule = ";
798 out <<
"kEvenOddRule";
801 out <<
"kWindingRule";
804 out <<
";" << std::endl;
807 out <<
" " << valname.
Data() <<
".fTile = " <<
GetTile() <<
";" << std::endl;
810 out <<
" " << valname.
Data() <<
".fStipple = " <<
GetStipple() <<
";" << std::endl;
819 out <<
" " << valname.
Data() <<
".fFont = ufont->GetFontHandle();" << std::endl;
822 out <<
" " << valname.
Data() <<
".fSubwindowMode = ";
825 out <<
"kClipByChildren";
828 out <<
"kIncludeInferiors";
831 out <<
";" << std::endl;
834 out <<
" " << valname.
Data() <<
".fGraphicsExposures = ";
839 out <<
";" << std::endl;
842 out <<
" " << valname.
Data() <<
".fClipXOrigin = " <<
GetClipXOrigin() <<
";" << std::endl;
845 out <<
" " << valname.
Data() <<
".fClipYOrigin = " <<
GetClipYOrigin() <<
";" << std::endl;
848 out <<
" " << valname.
Data() <<
".fClipMask = " <<
GetClipMask() <<
";" << std::endl;
851 out <<
" " << valname.
Data() <<
".fDashOffset = " <<
GetDashOffset() <<
";" << std::endl;
855 Warning(
"TGGC::SavePrimitive",
"dash list can have only up to %ld elements",
857 out <<
" " << valname.
Data() <<
".fDashLen = "
859 out <<
" memcpy(GetDashes()," << valname.
Data() <<
".fDashes,"
860 << valname.
Data() <<
".fDashLen);" << std::endl;
863 out <<
" " << valname.
Data() <<
".fArcMode = ";
869 out <<
"kArcPieSlice";
872 out <<
";" << std::endl;
876 out <<
" uGC = gClient->GetGC(&" << valname.
Data() <<
", kTRUE);" << std::endl;
908 if (
gc->References() > 1)
909 Error(
"ForceFreeGC",
"removed a shared graphics context\n"
910 "best to use graphics contexts via the TGGCPool()");
923 if (
gc->RemoveReference() == 0) {
938 if (
gc->fContext == gct) {
939 if (
gc->RemoveReference() == 0) {
965 if (
gc->fContext == gct)
989 TGGC *
gc, *best_match = 0;
990 Int_t matching_bits, best_matching_bits = -1;
1003 while ((
gc = (
TGGC *) next())) {
1005 if (matching_bits > best_matching_bits) {
1006 best_matching_bits = matching_bits;
1008 if ((
gc->fValues.fMask & values->
fMask) == values->
fMask) {
1017 Printf(
"<TGGCPool::GetGC>: %smatching GC found\n", exact ?
"exact " :
"");
1042 Int_t matching_bits = -1;
1048 if (common_bits == 0)
return 0;
1065 for (bit = 1; bit <= common_bits; bit <<= 1) {
1066 switch (bit & common_bits) {
1147 return matching_bits;
1155 gc->SetAttributes(values);
const Mask_t kGCDashOffset
const Mask_t kGCBackground
const Mask_t kGCForeground
const Mask_t kGCLineStyle
const Mask_t kGCSubwindowMode
const Mask_t kGCLineWidth
Handle_t Pixmap_t
Pixmap handle.
const Mask_t kGCClipXOrigin
Handle_t FontH_t
Font handle (as opposed to Font_t which is an index)
const Mask_t kGCFillStyle
const Mask_t kGCJoinStyle
@ kGXorReverse
src OR NOT dst
@ kGXnand
NOT src OR NOT dst.
@ kGXandReverse
src AND NOT dst
@ kGXorInverted
NOT src OR dst.
@ kGXandInverted
NOT src AND dst.
@ kGXequiv
NOT src XOR dst.
@ kGXnor
NOT src AND NOT dst.
@ kGXcopyInverted
NOT src.
Handle_t GContext_t
Graphics context handle.
const Mask_t kGCTileStipXOrigin
const Mask_t kGCPlaneMask
const Mask_t kGCGraphicsExposures
const Mask_t kGCClipYOrigin
const Mask_t kGCTileStipYOrigin
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t mask
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t gval
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void gc
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
static const char * PixelAsHexString(ULong_t pixel)
Convert machine dependent pixel value (obtained via RGB2Pixel or via Number2Pixel() or via TColor::Ge...
void Print(Option_t *option="") const override
List all graphics contexts in the pool.
virtual ~TGGCPool()
Delete graphics context pool.
Int_t MatchGC(const TGGC *gc, GCValues_t *values)
Try to find matching graphics context.
TGGC * GetGC(GCValues_t *values, Bool_t rw=kFALSE)
Get the best matching graphics context depending on values.
void FreeGC(const TGGC *gc)
Delete graphics context if it is not used anymore.
TGGC * FindGC(const TGGC *gc)
Find graphics context. Returns 0 in case gc is not found.
void ForceFreeGC(const TGGC *gc)
Force remove graphics context from list. Is only called via ~TGGC().
TGGCPool(const TGGCPool &gp)
void UpdateGC(TGGC *gc, GCValues_t *values)
Update graphics context with the values spcified in values->fMask.
Encapsulate a graphics context used in the low level graphics.
void SetArcMode(Int_t v)
Set arc mode (kArcChord, kArcPieSlice).
Int_t GetTileStipYOrigin() const
TGGC(GCValues_t *values, Bool_t calledByGCPool)
Create a graphics context (only called via TGGCPool::GetGC()).
Int_t GetJoinStyle() const
Bool_t GetGraphicsExposures() const
Int_t GetSubwindowMode() const
Int_t GetFillStyle() const
void SetLineWidth(Int_t v)
Set line width.
ULong_t GetPlaneMask() const
void SetFont(FontH_t v)
Set font.
void SetPlaneMask(ULong_t v)
Set plane mask.
TGGC & operator=(const TGGC &rhs)
Graphics context assignment operator.
GContext_t fContext
graphics context handle
void SetTileStipYOrigin(Int_t v)
Y offset for tile or stipple operations.
Pixmap_t GetClipMask() const
Int_t GetClipXOrigin() const
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save graphics context info as a C++ statement(s) on output stream out.
void SetFillStyle(Int_t v)
Set fill style (kFillSolid, kFillTiled, kFillStippled, kFillOpaeueStippled).
Pixel_t GetForeground() const
Int_t GetFillRule() const
GCValues_t fValues
graphics context values + mask
void SetCapStyle(Int_t v)
Set cap style (kCapNotLast, kCapButt, kCapRound, kCapProjecting).
const char * GetDashes() const
Int_t GetTileStipXOrigin() const
void SetForeground(Pixel_t v)
Set foreground color.
Int_t GetLineStyle() const
void SetClipMask(Pixmap_t v)
Bitmap for clipping.
void SetFillRule(Int_t v)
Set fill rule (kEvenOddRule, kWindingRule).
GContext_t operator()() const
Not inline due to a bug in g++ 2.96 20000731 (Red Hat Linux 7.0).
void SetDashOffset(Int_t v)
Patterned/dashed line offset.
void SetTileStipXOrigin(Int_t v)
X offset for tile or stipple operations.
void SetAttributes(GCValues_t *values)
Set attributes as specified in the values structure.
void SetDashList(const char v[], Int_t len)
Set dash pattern. First use SetDashOffset() if not 0.
EGraphicsFunction GetFunction() const
void SetJoinStyle(Int_t v)
Set line join style (kJoinMiter, kJoinRound, kJoinBevel).
void SetClipXOrigin(Int_t v)
X origin for clipping.
Int_t GetClipYOrigin() const
Pixel_t GetBackground() const
void SetTile(Pixmap_t v)
Set tile pixmap for tiling operations.
void SetClipYOrigin(Int_t v)
Y origin for clipping.
void Print(Option_t *option="") const override
Print graphics contexts info.
void UpdateValues(GCValues_t *v)
Update values + mask.
void SetBackground(Pixel_t v)
Set background color.
void SetFunction(EGraphicsFunction v)
Set graphics context drawing function.
void SetStipple(Pixmap_t v)
Set 1 plane pixmap for stippling.
Pixmap_t GetStipple() const
Int_t GetLineWidth() const
void SetGraphicsExposures(Bool_t v)
True if graphics exposure should be generated.
void SetLineStyle(Int_t v)
Set line style (kLineSolid, kLineOnOffDash, kLineDoubleDash).
Int_t GetDashOffset() const
Int_t GetCapStyle() const
virtual ~TGGC()
Delete graphics context.
TString GetMaskString() const
Returns GC mask as a string - used in SavePrimitive().
void SetSubwindowMode(Int_t v)
Set sub window mode (kClipByChildren, kIncludeInferiors).
TGClient * fClient
Connection to display server.
THashTable implements a hash table to store TObject's.
void Add(TObject *obj) override
Add object to the hash table.
TObject * Remove(TObject *obj) override
Remove object from the hashtable.
TObject * FindObject(const char *name) const override
Find object using its name.
void Print(Option_t *option, Int_t recurse) const override
Print the collection header and its elements.
Mother of all ROOT objects.
TObject & operator=(const TObject &rhs)
TObject assignment operator.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definitions for TRefCnt, base class for reference counted objects.
void SetRefCount(UInt_t r)
UInt_t References() const
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Graphics context structure.
ULong_t fBackground
background pixel
Int_t fFillRule
kEvenOddRule, kWindingRule
Pixmap_t fClipMask
bitmap clipping; other calls for rects
Int_t fDashOffset
patterned/dashed line information
Int_t fClipXOrigin
origin for clipping
Int_t fLineWidth
line width
Pixmap_t fStipple
stipple 1 plane pixmap for stippling
Mask_t fMask
bit mask specifying which fields are valid
Int_t fLineStyle
kLineSolid, kLineOnOffDash, kLineDoubleDash
Pixmap_t fTile
tile pixmap for tiling operations
Bool_t fGraphicsExposures
boolean, should exposures be generated
Int_t fJoinStyle
kJoinMiter, kJoinRound, kJoinBevel
Char_t fDashes[8]
dash pattern list (dash length per byte)
ULong_t fForeground
foreground pixel
ULong_t fPlaneMask
plane mask
Int_t fFillStyle
kFillSolid, kFillTiled, kFillStippled, kFillOpaeueStippled
FontH_t fFont
default text font for text operations
Int_t fTsXOrigin
offset for tile or stipple operations
EGraphicsFunction fFunction
logical operation
Int_t fDashLen
number of dashes in fDashes
Int_t fCapStyle
kCapNotLast, kCapButt, kCapRound, kCapProjecting
Int_t fArcMode
kArcChord, kArcPieSlice
Int_t fSubwindowMode
kClipByChildren, kIncludeInferiors