Author: bgbnbigben
Date: 2011-05-06 05:11:08 -0700 (Fri, 06 May 2011)
New Revision: 8638
Log:
Finished the XP theme.
Forced a scrollbar redraw to avoid artifacting every time the user moves the bar
Changed default colours and added in a default alt_colour for the XP theme,
which will be implemented later (hopefully, if I have the time!)
Modified:
trunk/src/Scrollbar.cxx
trunk/src/x11/fltk_theme.cxx
Modified: trunk/src/Scrollbar.cxx
===================================================================
--- trunk/src/Scrollbar.cxx 2011-05-06 09:38:15 UTC (rev 8637)
+++ trunk/src/Scrollbar.cxx 2011-05-06 12:11:08 UTC (rev 8638)
@@ -187,7 +187,7 @@
}
goto J1;
case DRAG:
- if (which_pushed==SLIDER) return Slider::handle(event, r);
+ if (which_pushed==SLIDER) {redraw(); return Slider::handle(event, r);}
if (which_part == SLIDER) which_part = NOTHING;
// it is okay to switch between arrows and nothing, but no other
// changes are allowed:
Modified: trunk/src/x11/fltk_theme.cxx
===================================================================
--- trunk/src/x11/fltk_theme.cxx 2011-05-06 09:38:15 UTC (rev 8637)
+++ trunk/src/x11/fltk_theme.cxx 2011-05-06 12:11:08 UTC (rev 8638)
@@ -6,6 +6,12 @@
#include <cstdio>
#include <cstring>
+#define PAPERCOLOUR 0xFFFFFF00
+#define BGCOLOUR 0xF4F4EC00
+#define SLIDERCOLOUR 0xC7DAFF00
+#define BUTTONCOLOUR GRAY75
+#define BARCOLOUR lerp(GRAY75, 0x8EA2E200, .1)
+
using namespace fltk;
/* BS: The below is a trial of an XP theme. For now they're not in the
public API, because I really don't think they should be
@@ -98,55 +104,60 @@
V_KNURL_PUSHED
}; // 13 frames each
+static void draw_arrows(const Rectangle& R, int drawflags) {
+ if (drawflags & ALIGN_TOP) {
+ if (drawflags & PUSHED)
+ set_frame(V_UP_ARROW_PUSHED);
+ else if (drawflags & HIGHLIGHT)
+ set_frame(V_UP_ARROW_HI);
+ else
+ set_frame(V_UP_ARROW);
+ img_frame->draw(R);
+ } else if (drawflags & ALIGN_BOTTOM) {
+ if (drawflags & PUSHED)
+ set_frame(V_DOWN_ARROW_PUSHED);
+ else if (drawflags & HIGHLIGHT)
+ set_frame(V_DOWN_ARROW_HI);
+ else
+ set_frame(V_DOWN_ARROW);
+ img_frame->draw(R);
+
+ } else if (drawflags & ALIGN_LEFT) {
+ if (drawflags & PUSHED)
+ set_frame(H_LEFT_ARROW_PUSHED);
+ else if (drawflags & HIGHLIGHT)
+ set_frame(H_LEFT_ARROW_HI);
+ else
+ set_frame(H_LEFT_ARROW);
+ img_frame->draw(R);
+ } else if (drawflags & ALIGN_RIGHT) {
+ if (drawflags & PUSHED)
+ set_frame(H_RIGHT_ARROW_PUSHED);
+ else if (drawflags & HIGHLIGHT)
+ set_frame(H_RIGHT_ARROW_HI);
+ else
+ set_frame(H_RIGHT_ARROW);
+ img_frame->draw(R);
+ }
+}
+
static class XPScrollBarGlyph : public Symbol {
public:
void _draw(const Rectangle& R) const {
scroll_glyph_init_check();
-
if (drawflags() & ALIGN_MASK) {
- if (drawflags() & ALIGN_TOP) {
- if (drawflags() & PUSHED)
- set_frame(V_UP_ARROW_PUSHED);
- else if (drawflags() & HIGHLIGHT)
- set_frame(V_UP_ARROW_HI);
- else
- set_frame(V_UP_ARROW);
- img_frame->draw(R);
- } else if (drawflags() & ALIGN_BOTTOM) {
- if (drawflags() & PUSHED)
- set_frame(V_DOWN_ARROW_PUSHED);
- else if (drawflags() & HIGHLIGHT)
- set_frame(V_DOWN_ARROW_HI);
- else
- set_frame(V_DOWN_ARROW);
- img_frame->draw(R);
+ draw_arrows(R, drawflags());
+ if (drawflags() & ALIGN_BOTTOM) {
if (R.h() > R.w()) {
set_frame(V_TRACK);
img_frame->draw_diced(R);
} else if (R.w() > R.h()) {
set_frame(H_TRACK);
- img_frame->draw_diced(R);
- }
- } else if (drawflags() & ALIGN_LEFT) {
- if (drawflags() & PUSHED)
- set_frame(H_LEFT_ARROW_PUSHED);
- else if (drawflags() & HIGHLIGHT)
- set_frame(H_LEFT_ARROW_HI);
- else
- set_frame(H_LEFT_ARROW);
- img_frame->draw(R);
- } else if (drawflags() & ALIGN_RIGHT) {
- if (drawflags() & PUSHED)
- set_frame(H_RIGHT_ARROW_PUSHED);
- else if (drawflags() & HIGHLIGHT)
- set_frame(H_RIGHT_ARROW_HI);
- else
- set_frame(H_RIGHT_ARROW);
- img_frame->draw(R);
+ img_frame->draw_diced(R);
+ }
}
} else {
if (R.x() == 0) { // Vertical
-
if (drawflags() & PUSHED)
set_frame(V_SLIDER_PUSHED);
else if (drawflags() & HIGHLIGHT)
@@ -154,10 +165,10 @@
else
set_frame(V_SLIDER);
img_frame->draw_diced(R);
-
+
if (drawflags() & PUSHED)
set_frame(V_KNURL_PUSHED);
- if (drawflags() & HIGHLIGHT)
+ else if (drawflags() & HIGHLIGHT)
set_frame(V_KNURL_HI);
else
set_frame(V_KNURL);
@@ -171,7 +182,7 @@
rr.h(FRAME_SIZE);
}
push_clip(rr);
- img_frame->draw(rr);
+ img_frame->draw_diced(rr);
pop_clip();
} else if (R.y() == 0){
if (drawflags() & PUSHED)
@@ -202,7 +213,6 @@
pop_clip();
}
}
-
}
XPScrollBarGlyph() : Symbol("XPScrollBarGlyph") {}
~XPScrollBarGlyph() {
@@ -213,39 +223,7 @@
static class ArrowGlyph : public Symbol {
public:
void _draw(const Rectangle& R) const {
- if (drawflags() & ALIGN_TOP) {
- if (drawflags() & PUSHED)
- set_frame(V_UP_ARROW_PUSHED);
- else if (drawflags() & HIGHLIGHT)
- set_frame(V_UP_ARROW_HI);
- else
- set_frame(V_UP_ARROW);
- img_frame->draw_diced(R);
- } else if (drawflags() & ALIGN_BOTTOM) {
- if (drawflags() & PUSHED)
- set_frame(V_DOWN_ARROW_PUSHED);
- else if (drawflags() & HIGHLIGHT)
- set_frame(V_DOWN_ARROW_HI);
- else
- set_frame(V_DOWN_ARROW);
- img_frame->draw_diced(R);
- } else if (drawflags() & ALIGN_LEFT) {
- if (drawflags() & PUSHED)
- set_frame(H_LEFT_ARROW_PUSHED);
- else if (drawflags() & HIGHLIGHT)
- set_frame(H_LEFT_ARROW_HI);
- else
- set_frame(H_LEFT_ARROW);
- img_frame->draw_diced(R);
- } else if (drawflags() & ALIGN_RIGHT) {
- if (drawflags() & PUSHED)
- set_frame(H_RIGHT_ARROW_PUSHED);
- else if (drawflags() & HIGHLIGHT)
- set_frame(H_RIGHT_ARROW_HI);
- else
- set_frame(H_RIGHT_ARROW);
- img_frame->draw_diced(R);
- }
+ draw_arrows(R, drawflags());
}
ArrowGlyph() : Symbol("arrow glyph") {}
} arrow_glyph;
@@ -295,16 +273,29 @@
data_(pattern), down_(down) {
set_inset(dx, dy, -dw, -dh);
if(strcmp(pattern, "return") == 0)
+ type_return_ = true;
+ else
type_return_ = false;
- else
- type_return_ = true;
}
} xp_box("XPDownBox", 5, 5, 10, 10, "down"), xp_return_box("XPDownBox", 5, 5,
10, 10, "return", &xp_box);
extern "C" bool fltk_theme() {
Style* s;
- if((s = Style::find("Scrollbar"))) {
+ if((s = Style::find("default"))) {
+ s->scrollbar_width(17);
+ s->color(PAPERCOLOUR);
+ s->buttoncolor(BUTTONCOLOUR);
+ s->labelsize(12.0);
+ s->textsize(12.0);
+ s->leading(4);
+ s->selection_color(0x316AC500);
+ s->alt_color(BARCOLOUR); // used by some buttons
+ }
+ if ((s = Style::find("Window"))) {
+ s->color(BGCOLOUR);
+ }
+ if ((s = Style::find("Scrollbar"))) {
s->highlight_color(s->color());
s->color(-1);
s->glyph(&xp_glyph);
@@ -336,10 +327,14 @@
}
if ((s = Style::find("Adjuster"))) {
s->buttonbox(&xp_box);
+ s->color(BGCOLOUR);
+ s->buttoncolor(SLIDERCOLOUR);
s->highlight_color(s->color());
}
if ((s = Style::find("Slider"))) {
s->buttonbox(&xp_box);
+ s->color(BGCOLOUR);
+ s->buttoncolor(SLIDERCOLOUR);
s->highlight_color(s->color());
}
if ((s = Style::find("InputBrowser"))) {
@@ -348,7 +343,8 @@
}
if ((s = Style::find("ValueInput"))) {
s->glyph(&arrow_glyph);
- s->color(-1);
+ s->color(PAPERCOLOUR);
+ s->buttoncolor(SLIDERCOLOUR);
s->highlight_color(s->color());
}
if ((s = Style::find("CycleButton"))) {
@@ -356,13 +352,19 @@
s->highlight_color(s->color());
}
if ((s = Style::find("Menu"))) {
- s->color(GRAY75); //FIXME: Placeholder
+ s->color(BGCOLOUR);
s->highlight_color(DARK_BLUE);
}
if ((s = Style::find("BarGroup"))) {
s->glyph(&arrow_glyph);
s->highlight_color(s->color());
}
+ if ((s = Style::find("Item"))) {
+ s->color(PAPERCOLOUR);
+ s->buttoncolor(SLIDERCOLOUR);
+ s->selection_color(0x316AC500);
+ s->leading(5);
+ }
return true;
}
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit