I am going to take liberty here
> On 27.04.2012 17:37, David Currie wrote:
>
> > Moving Forward... Yes I have added background colours to Fl_Text_Display.
>
> Could you let us see a diff file?
what is a diff? is it the output from diff original new?
>
> > BUT Warning there are issues : Theory Talk imminent
> >
> > struct Style_Table_Entry {
> > Fl_Color color;
> > Fl_Font font;
> > Fl_Fontsize size;
> > unsigned attr; // attr is so far unused so i used it for Fl_Color bg
> > };
> >
> > After fixing appropriate code, in my (user) structs I put actual colours
> > into the attr field,and of course a result. This will cause issues with
> > previous
> > people's code. These issues of course this can be circumvented by methods
> > BUT... Whatever way is chosen
> > sizeof(Fl_Text_display) will have to change AND
>
> why would sizeof(Fl_Text_display) change?
firstly user defined
Fl_Text_Display::Style_Table_Entry stable[] = {
{ FL_RED, FL_COURIER, 18 }, // A - Red
}; // i assume the compiler puts nulls into each attr because each struct is
only partially defined.
A Style_Table_Entry uses OVERRIDES.
bg_color must exist (somewhere) in each Style_Table_Entry
Fl_Text_display needs to know WHETHER bg colours (in Style_Table_Entry) are
being used
otherwise OLD CODE will pick up non defined info causing random behavoir.
hence bool mDoing_Background_In_StyleTable(or like) must(ought to) be in
Fl_Text_Display.
>
> > sizeof(Style_Table_Entry) will ALSO have to change even if attr is to NOT
> > preserved
>
> why? sizeof(Style_Table_Entry) would be the same if attr were
> /replaced with/ (or used as) the background color, wouldn't it?
>
You could be right. I think my point was if attr was changed into Fl_Color bg
you still need 2 attr bits for underline and strike-thru.
UNLESS you cram all Fl_Color info + isRgb/ii + 2 bits (underline + strike-thru)
somehow and unscramble them into various bools and Fl_color.This would be messy.
> > How to do the fixes without impacting existing code...
>
> Yup, that's the question...
>
> > Which leads me to...
> > Exactly what is an Fl_Color?
> > As I understand its either rrggbbii or 000000nn where nn is internally
> > defined.
>
> In fact it's either rrggbb00 or 000000ii, where rr, gg, bb, and ii can
> all have values from 0 to 255 (unsigned), ie. hex 00 to ff. Of course,
> 00000000 is black in both "encodings" ((ii=0) = black = (rr=gg=bb=0)).
Ah ha !!
>
> > Now, in some postings i noticed some would like
> > underline,bold,italic,etc(??).
> > FLTK can be made to do bg , but is underline,bold,italic,etc also a
> > requirement?
> > If so where will the instruction be put?
> >
> > It occurs to me a different way to do Fl_Color is iirrggbb or ii0000nn
> > where one of the bits of ii declares whether the other 24 is rgb or not.
> > This way (underline,bold,italic,etc) can be various bits of ii
>
> That would be one possible way to do it ...
>
> > But I don't know which bits of ii are currently unused.
Sorry , I thought ii was some special code
>
> Unfortunately there are no "free" bits in the current Fl_Color scheme,
> so this change would definitely break existing code. LOTS of existing
> code, especially where rrggbb00 is used in user code. :-(
>
> > maybe Fl_Text_Color : Fl_Color? mm... really all this is a STYLE
>
> ??
bit information about underline/strike-thru pertains to TEXT STYLE not color
>
> > Of course changing Fl_Color will cancerise the rest of the system so
> > perhaps not.
>
> No way, as far as I can tell...
I meant cancerise = LOTS of changes
>
> > Now I personally only need bg Colors not (underline,bold,italic,etc) so i'm
> > allright jack.
> > But it seems to me this should be complete.
Is {underline,strike-thru) a complete set as Matthias has implied.
> >
> > I have further discussion on this and many other matters. My personal
> > opinion will be given after I am given instruction on how to proceed.
>
> I can imagine that extending the Style_Table_Entry struct would be the
> (probably only) way to go. Existing code could probably be re-compiled
> w/o problems. If you take a look at test/editor.cxx: the existing attr
> member is ignored completely, and I assume that another member in this
> struct wouldn't do any harm.
>
> The problem is with ABI compatibility, so this extension would have to
> be guarded with our (new) ABI compatibility preprocessor macro, so that
> existing code wouldn't be affected. Whether this would be feasible I
> don't know yet. That depends on how much code in Fl_Text_Display would
> be affected.
>
Having seen it I would guess NOT. What is ABI?
> > Who decides which way to jump.
>
> I suggest to open an STR (as proposed earlier), and post your code
> changes as diff (patch) files to the STR. You should add another member
> to the style struct (IMO) and see what happens. Guarding your changes
> with
>
> #if FLTK_ABI_VERSION >= 10302
> new or changed code;
> #else // if necessary
> old code; // if necessary
> #endif
>
> would be the way to go for this ABI-breaking new feature.
>
> Albrecht
>
> P.S. ... and I just saw Matthias' proposal to split the attr member in
> four bytes, which looks promising and wouldn't break the ABI if done
> correctly (might depend on the compiler, however, I don't know). Maybe
> we'd need a union or something...
Ok its time for my personal opinion.
We are all trying inventive solutions because of space... this is NOT the way
to go
#define STYLE_ATTR_NONE 0
#define STYLE_ATTR_UNDERLINED 1 // bit 1
#define STYLE_ATTR_STRIKE_THROUGH 2 // bit 2 // someone tell me if these 2
are independent
struct Style_Table_Entry {
Fl_Color color;
Fl_Font font;
Fl_Fontsize size;
Fl_Color bg_color; // although matthias' idea was good this way u can
have a rgb Background
unsigned attr; // still 30 bits over for future
};
Fl_Text_Display::highlightDataBG(same parms as highlightData etc);
(member) bool mUseStyleBg = false but true if highlightDataBG called
Fl_Text_Display::Fl_Text_Display(int X, int Y, int W, int H,Fl_Color
background, Fl_Color selection, const char* l = 0);
now existing old code won't use the bg_color or attr.
Having seen Fl_Text_Display.cxx I would assert that this will not break it
Of course I still have to do the underline and strike-through
but i think there was a Fl_Browser somewhere...
Please explain STR and diff and confirm task.
_______________________________________________
fltk-dev mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-dev