From 85c41a1aec90b8daefc425596ea34b6f9d0e643c Mon Sep 17 00:00:00 2001 From: Marius Nita Date: Fri, 1 Nov 2002 03:27:41 +0000 Subject: [PATCH] adding toolkit beginnings --- otk/Makefile.am | 35 + otk/color.cc | 223 ++++++ otk/color.hh | 106 +++ otk/color.o | Bin 0 -> 214357 bytes otk/font.cc | 128 ++++ otk/font.hh | 82 +++ otk/font.o | Bin 0 -> 419488 bytes otk/gccache.cc | 188 +++++ otk/gccache.hh | 119 +++ otk/gccache.o | Bin 0 -> 183688 bytes otk/image.cc | 1677 +++++++++++++++++++++++++++++++++++++++++++ otk/image.hh | 144 ++++ otk/image.o | Bin 0 -> 310968 bytes otk/imagecontrol.cc | 561 +++++++++++++++ otk/texture.cc | 183 +++++ otk/texture.hh | 92 +++ 16 files changed, 3538 insertions(+) create mode 100644 otk/Makefile.am create mode 100644 otk/color.cc create mode 100644 otk/color.hh create mode 100644 otk/color.o create mode 100644 otk/font.cc create mode 100644 otk/font.hh create mode 100644 otk/font.o create mode 100644 otk/gccache.cc create mode 100644 otk/gccache.hh create mode 100644 otk/gccache.o create mode 100644 otk/image.cc create mode 100644 otk/image.hh create mode 100644 otk/image.o create mode 100644 otk/imagecontrol.cc create mode 100644 otk/texture.cc create mode 100644 otk/texture.hh diff --git a/otk/Makefile.am b/otk/Makefile.am new file mode 100644 index 00000000..835874d5 --- /dev/null +++ b/otk/Makefile.am @@ -0,0 +1,35 @@ +DEFAULT_MENU=$(pkgdatadir)/menu +DEFAULT_STYLE=$(pkgdatadir)/styles/mbdtex + +CXXFLAGS=`pkg-config --cflags xft` @CXXFLAGS@ \ +-DDEFAULTMENU=\"$(DEFAULT_MENU)\" \ +-DDEFAULTSTYLE=\"$(DEFAULT_STYLE)\" \ +-Dmultibyte\(\)=True + +INCLUDES= -I../src + +LDFLAGS=`pkg-config --libs xft` + +noinst_LIBRARIES=libotk.a + +libotk_a_SOURCES= color.cc font.cc gccache.cc image.cc imagecontrol.cc texture.cc + +MAINTAINERCLEANFILES= Makefile.in + +distclean-local: + rm -f *\~ *.orig *.rej .\#* + +# local dependencies +color.o: color.cc color.hh ../src/basedisplay.hh ../src/timer.hh ../src/util.hh +font.o: font.cc font.hh ../src/screen.hh color.hh texture.hh ../src/util.hh image.hh \ + ../src/timer.hh ../src/basedisplay.hh ../src/workspace.hh ../src/xatom.hh ../src/blackbox.hh \ + ../src/configuration.hh gccache.hh +gccache.o: gccache.cc gccache.hh ../src/basedisplay.hh ../src/timer.hh ../src/util.hh \ + color.hh +image.o: image.cc ../src/blackbox.hh ../src/basedisplay.hh ../src/timer.hh ../src/util.hh \ + ../src/configuration.hh ../src/xatom.hh gccache.hh color.hh image.hh texture.hh +imagecontrol.o: imagecontrol.cc ../src/blackbox.hh ../src/basedisplay.hh ../src/timer.hh \ + ../src/util.hh ../src/configuration.hh ../src/xatom.hh color.hh image.hh texture.hh +texture.o: texture.cc texture.hh color.hh ../src/util.hh ../src/basedisplay.hh \ + ../src/timer.hh image.hh ../src/screen.hh ../src/workspace.hh ../src/xatom.hh \ + ../src/blackbox.hh ../src/configuration.hh diff --git a/otk/color.cc b/otk/color.cc new file mode 100644 index 00000000..ad30c7a3 --- /dev/null +++ b/otk/color.cc @@ -0,0 +1,223 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- + +#ifdef HAVE_CONFIG_H +# include "../config.h" +#endif // HAVE_CONFIG_H + +extern "C" { +#include +} + +#include + +#include "color.hh" +#include "basedisplay.hh" + + +BColor::ColorCache BColor::colorcache; +bool BColor::cleancache = false; + +BColor::BColor(const BaseDisplay * const _display, unsigned int _screen) + : allocated(false), r(-1), g(-1), b(-1), p(0), dpy(_display), scrn(_screen) +{} + +BColor::BColor(int _r, int _g, int _b, + const BaseDisplay * const _display, unsigned int _screen) + : allocated(false), r(_r), g(_g), b(_b), p(0), dpy(_display), scrn(_screen) +{} + + +BColor::BColor(const std::string &_name, + const BaseDisplay * const _display, unsigned int _screen) + : allocated(false), r(-1), g(-1), b(-1), p(0), dpy(_display), scrn(_screen), + colorname(_name) { + parseColorName(); +} + + +BColor::~BColor(void) { + deallocate(); +} + + +void BColor::setDisplay(const BaseDisplay * const _display, + unsigned int _screen) { + if (_display == display() && _screen == screen()) { + // nothing to do + return; + } + + deallocate(); + + dpy = _display; + scrn = _screen; + + if (! colorname.empty()) { + parseColorName(); + } +} + + +unsigned long BColor::pixel(void) const { + if (! allocated) { + // mutable + BColor *that = (BColor *) this; + that->allocate(); + } + + return p; +} + + +void BColor::parseColorName(void) { + assert(dpy != 0); + + if (colorname.empty()) { + fprintf(stderr, "BColor: empty colorname, cannot parse (using black)\n"); + setRGB(0, 0, 0); + } + + if (scrn == ~(0u)) + scrn = DefaultScreen(display()->getXDisplay()); + Colormap colormap = display()->getScreenInfo(scrn)->getColormap(); + + // get rgb values from colorname + XColor xcol; + xcol.red = 0; + xcol.green = 0; + xcol.blue = 0; + xcol.pixel = 0; + + if (! XParseColor(display()->getXDisplay(), colormap, + colorname.c_str(), &xcol)) { + fprintf(stderr, "BColor::allocate: color parse error: \"%s\"\n", + colorname.c_str()); + setRGB(0, 0, 0); + return; + } + + setRGB(xcol.red >> 8, xcol.green >> 8, xcol.blue >> 8); +} + + +void BColor::allocate(void) { + assert(dpy != 0); + + if (scrn == ~(0u)) scrn = DefaultScreen(display()->getXDisplay()); + Colormap colormap = display()->getScreenInfo(scrn)->getColormap(); + + if (! isValid()) { + if (colorname.empty()) { + fprintf(stderr, "BColor: cannot allocate invalid color (using black)\n"); + setRGB(0, 0, 0); + } else { + parseColorName(); + } + } + + // see if we have allocated this color before + RGB rgb(display(), scrn, r, g, b); + ColorCache::iterator it = colorcache.find(rgb); + if (it != colorcache.end()) { + // found + allocated = true; + p = (*it).second.p; + (*it).second.count++; + return; + } + + // allocate color from rgb values + XColor xcol; + xcol.red = r | r << 8; + xcol.green = g | g << 8; + xcol.blue = b | b << 8; + xcol.pixel = 0; + + if (! XAllocColor(display()->getXDisplay(), colormap, &xcol)) { + fprintf(stderr, "BColor::allocate: color alloc error: rgb:%x/%x/%x\n", + r, g, b); + xcol.pixel = 0; + } + + p = xcol.pixel; + allocated = true; + + colorcache.insert(ColorCacheItem(rgb, PixelRef(p))); + + if (cleancache) + doCacheCleanup(); +} + + +void BColor::deallocate(void) { + if (! allocated) + return; + + assert(dpy != 0); + + ColorCache::iterator it = colorcache.find(RGB(display(), scrn, r, g, b)); + if (it != colorcache.end()) { + if ((*it).second.count >= 1) + (*it).second.count--; + } + + if (cleancache) + doCacheCleanup(); + + allocated = false; +} + + +BColor &BColor::operator=(const BColor &c) { + deallocate(); + + setRGB(c.r, c.g, c.b); + colorname = c.colorname; + dpy = c.dpy; + scrn = c.scrn; + return *this; +} + + +void BColor::cleanupColorCache(void) { + cleancache = true; +} + + +void BColor::doCacheCleanup(void) { + // ### TODO - support multiple displays! + ColorCache::iterator it = colorcache.begin(); + if (it == colorcache.end()) { + // nothing to do + return; + } + + const BaseDisplay* const display = (*it).first.display; + unsigned long *pixels = new unsigned long[ colorcache.size() ]; + unsigned int i, count; + + for (i = 0; i < display->getNumberOfScreens(); i++) { + count = 0; + it = colorcache.begin(); + + while (it != colorcache.end()) { + if ((*it).second.count != 0 || (*it).first.screen != i) { + ++it; + continue; + } + + pixels[ count++ ] = (*it).second.p; + ColorCache::iterator it2 = it; + ++it; + colorcache.erase(it2); + } + + if (count > 0) + XFreeColors(display->getXDisplay(), + display->getScreenInfo(i)->getColormap(), + pixels, count, 0); + } + + delete [] pixels; + cleancache = false; +} diff --git a/otk/color.hh b/otk/color.hh new file mode 100644 index 00000000..5f3cb955 --- /dev/null +++ b/otk/color.hh @@ -0,0 +1,106 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- +#ifndef COLOR_HH +#define COLOR_HH + +extern "C" { +#include +} + +#include +#include + +class BaseDisplay; + +class BColor { +public: + BColor(const BaseDisplay * const _display = 0, unsigned int _screen = ~(0u)); + BColor(int _r, int _g, int _b, + const BaseDisplay * const _display, unsigned int _screen = ~(0u)); + BColor(const std::string &_name, + const BaseDisplay * const _display, unsigned int _screen = ~(0u)); + ~BColor(void); + + inline const std::string &name(void) const { return colorname; } + + inline int red(void) const { return r; } + inline int green(void) const { return g; } + inline int blue(void) const { return b; } + void setRGB(int _r, int _g, int _b) { + deallocate(); + r = _r; + g = _g; + b = _b; + } + + inline const BaseDisplay *display(void) const { return dpy; } + inline unsigned int screen(void) const { return scrn; } + void setDisplay(const BaseDisplay * const _display, + unsigned int _screen = ~(0u)); + + inline bool isAllocated(void) const { return allocated; } + + inline bool isValid(void) const { return r != -1 && g != -1 && b != -1; } + + unsigned long pixel(void) const; + + // operators + BColor &operator=(const BColor &c); + inline bool operator==(const BColor &c) const + { return (r == c.r && b == c.b && b == c.b); } + inline bool operator!=(const BColor &c) const + { return (! operator==(c)); } + + static void cleanupColorCache(void); + +private: + void parseColorName(void); + void allocate(void); + void deallocate(void); + + bool allocated; + int r, g, b; + unsigned long p; + const BaseDisplay *dpy; + unsigned int scrn; + std::string colorname; + + // global color allocator/deallocator + struct RGB { + const BaseDisplay* const display; + const unsigned int screen; + const int r, g, b; + + RGB(void) : display(0), screen(~(0u)), r(-1), g(-1), b(-1) { } + RGB(const BaseDisplay * const a, const unsigned int b, + const int x, const int y, const int z) + : display(a), screen(b), r(x), g(y), b(z) {} + RGB(const RGB &x) + : display(x.display), screen(x.screen), r(x.r), g(x.g), b(x.b) {} + + inline bool operator==(const RGB &x) const { + return display == x.display && + screen == x.screen && + r == x.r && g == x.g && b == x.b; + } + + inline bool operator<(const RGB &x) const { + unsigned long p1, p2; + p1 = (screen << 24 | r << 16 | g << 8 | b) & 0x00ffffff; + p2 = (x.screen << 24 | x.r << 16 | x.g << 8 | x.b) & 0x00ffffff; + return p1 < p2; + } + }; + struct PixelRef { + const unsigned long p; + unsigned int count; + inline PixelRef(void) : p(0), count(0) { } + inline PixelRef(const unsigned long x) : p(x), count(1) { } + }; + typedef std::map ColorCache; + typedef ColorCache::value_type ColorCacheItem; + static ColorCache colorcache; + static bool cleancache; + static void doCacheCleanup(void); +}; + +#endif // COLOR_HH diff --git a/otk/color.o b/otk/color.o new file mode 100644 index 0000000000000000000000000000000000000000..1fcba15cb379b1a90545870c9d7824b6003304e5 GIT binary patch literal 214357 zcmd4433L=i7dBkIOwVMd4+JuhzzmRth^Q<9f&vB^mWZH0*bzifHbrFL1QZldLqJdz z7u-cbMPC<0R8$ZI_kFHh$=!pHP~A7@a1R%&=`hXq906x~fWbRh8;0K`rZ=J~G2C z|K?9ruOeL}j|;bFFB|jQu(My>R@pyYv13`!pO+2)W)sVMu;$h-e=go~Nn+svcaUmx zc;SIq|Gr+k{d<|u|6g#R9Qi0me~AvcFtL9o<5Uj+^Tll|!g=gx9{;!P2eS|^5LC`^ zPo9>nyf}M$TPPHsifPG;xp|dc)0LT@0c`P>8ClE5{5j0s5(=dxY3owhK)J!daQ0m((GDWj4cY z&qk1CWxL8D9GRT%dt_=mZ#p2U0SZE}O|Mx0BU94nF~X6yq|*J&BQs(OfQ-2_W7D)V z!&4atp2ET_5b}k0&5gr9skw2+?wT7f{!FzTNHi5g?TV?fiaGB7Hvp`%OS{Sii_jK1 zR&>tWSA+FL%I9UE3v_?B-+eCz+1Xij-&u9vS$4ngnZJ)5!Ms3iFFml7F)xlSoX={0 z&C(8LDUZzZ>X>mW7EeHLm9uOFY_(Sbk{$}5KNl7+eh;YH=ZO$)cX?VnrLYh6Xzy6LGMQKPa;QAKwQ>ZXNT zvX5l)ymGIo>~3$}6C0c8ZjY@fTaVyMia~m?vb(D!7t%vJ%ht)*-IM+M9(j!EADJAO z4%6pXmaRh<=&NG!WEQ9Fg`JD1gF)h=V)1OLdZqF@swx)GlOhsYP%&^tW!XFZD#{iu zyG1$e>R(ZIWu**KQMOd4c!OHWkk^8a#35=fItejk()*f&Y$^M_K&Usz{^om#JR+hV!v+c^sv5J8Qz2*JPAr*7&ifOn|9jxez3zfTY zOL|%Vbh$qL2fCGAaMeJPdAN2UapY35ORYu)lDhBSt z+?(O8UEA*9L`B87?lCL-WtUeByjG&ED8pD@yKqaU)e(fpD6Xg+cx5H7pTn;`p=)OA zZ|1V(f@R4!mL*p#OO`K7zE$z&*3W7l_vSM9g{_~N$8Bx@dd-D(F^xYwqNUhBLGw)k+xwizw%NWucvs%SuNM&d}ERor))n!Iw( zcrEsSf!@NJEtO>}Fi~p20KlH38Z@zQl$xu!OStr6+yw|RJ@Vo<&hv|7#*AOkW_+`q za(szSHolA8&WK!b$Wc_4*9)|)Wkm*SrmItMwjZv;+6_`kRfN*VCTWVSU!f82^h7E zY^R@L)kxJirbbRe2s6hpa;zGOM2E!55UsedYLM-b(=INA-2&E5u2tiTOpP8nC2lE} z+(<-_6~ZASMAY+9=2#1Z4U~{oB&=8>aS9^Gvqb_?g-F!YjN3%EkHZK3)29YaSh{kc zVOQC8&^_DKA|piYTpT>8IaN@FND_qQW2_^^m;zC^g<)wnw=VE7U>Zu#g2ScE80uoR9$;Lvqx%tUn6 z(MwTPFG3ts6-$UFe#US+Hqbl7rhy>9a2%0)$d1<$QSn3~o^TT!%@bs97!Nhp&Gf+O z+BBB~r-c?J$bfEg;5%X9nP$s>YJsDe*{V4sL@O?jvs%hjypzfr$a){df1BDRnL+*6$P%UWd1hpqu`6)$dHMbr)bnBRll*pW- z`-{Gyl*tM(1i;>bm$iRD0^WdZiPhTN9kEWx;lII5pIWn(mwe-PNdL zBu?W1SBX8U{OR0N$Kym*<4W!6EdK;xuIY^ za+G!y9lPgneDi@~bVM#gT&u^BrJkqdSh}^!sb$nQG8o8l5z#8g1an>kLurLLpE_JW zR6qv101+fmMwmdo3P{_94g7#YOe~R2Csn!h$f46@Z+bAm6cw0=JQ!0ww1hIP3NOX! z30$~p8@MZ|3PSx%hy*29n^{^wjeO?Qp%IJZ+ zIDz&99U(4B7(C2pl5DoXXaG)uyVMBuf;jBuG9v-l3k{81MqecTBo^(pSZccaLvp!M z1)jZJ!S*^)%2#@_9M6hCbXu3NwLFJZB`Sls}}sWBT1dl-(!e_IOCt^gIKU_@5%;H&}_(P`w_G^~$>bV6jEKXJOSBXJv1 zL_*TIeKUBM3bPh)ZJZ)R%xYlG>x%oYhSZ>cD=P!3QJ$1+dmo%7n$KI~ZUaj6dJGTF z37{g%twn=@!unW9hnui_enPI1c;Xm&ud z*F~|e$Nr?%LP@q&yA!0A1&Cobj#*#yf>f+*uC?!bNUfBVZPhyoQftOF8z-&a?IE>M zwmj?LBuFJSr7dm!gd1+Ft@6yb_b@FE!e1D%T5v&nxjZ-xKt=R7+6gtRkA-wdyYB+z z8?9l-?Gw==A!*!hj2JEz=BMCZ0mgi5to7?sAQ*Rt%t~0NUkvFyg*9d!ssZWzFX3%A zb}jK6r1471wx-+y=>jDstqU4Kn&9QQc|W8Jm6WzOqP@&&Z(kw4rC>x3^57f>717to z6HZtk3+Zs1eBljnN!SD*x0`|{B#qmDf_JGfS6f1qUWfZ*dyG}9F^Vv5H%=7JujjDK zWuF(rT4px3t?SAlonKE%F)Mxwr15GZQ1rTM3mt7{fK*2C;^f-%tTNT zt)!h@hV`+K4!8EN!fzoOIAomt7{YmL^B^9gc zUa6{EVsAq}vYuO0*tthXs2fXSIL|;3(T`|n!eM*(wynjfYhPvkxEj4K ze;XQ(ceg@FE0kngy9*#)s}RMklDd#?P?Bps{xzhVm6UD0AA@x3yHQ3-TJ7gRy6r_> zotIgiyVT6cx0j(OnaO|V3$YgsfS99YI0qnz=-spvTv#6q>6pn=aCEnT#6M>9Si)vn z7=KA=NZ4E<5;muIHs>(W2Ih~PM09sZ;P@2|wK%<{6BISTCu{@l zUY#giPNTXPNc@;*p^hYM3fY`4veT;R`!AE$kuD_YY$)4tV)^Z$yasYD&M$c$K(Q8l zTu$}4y&b$OXZ=m6VDSUEPDHv{S75XvWekFGt=$C{JJLNTg7qSD8vSzC3gPS&xh*;+Zv6$8C0)kTh<;1d~fe+-Bbi zN#pisR8tX`Q$KG1NQFELW?;?^orh}K_gbgpB4yvFE-1n}w+p2EIc8k-(^V<8>37TA<9>N6*x`xS?Tq;Y!{Y%UdMJ?s%J zo&d>t$eQ^r#{Xezc&09S4ALWi;C6@@KgNd-&PFxbG5ZiPu<*Y(Mr_=J0Snt1jsrnN zv&b`SSRV`N2xm0{rP#+2AidU!80im&qa(-A^D12fD}<9U)FNr8uQ~+L)nY8Yz8GR$ zi*EW46xpev#q9LoZ$qr9#bkQIdWhLt%uB!bJj7aBOs9w8y6M!`Vt#thO%Rh>EK1k9 z3Su2CHcfZNt%Flni_Owcz63GPP?alAe|R;-`i3f9NjfXJ2^V>pYK;JT1?r#1LA zJTBa&&p+$-yCAKhovXk}MUd|8BBhwc;$+=-nv`6m3J{z!52Bpdl_4UwGaT%Y0BHmA z>?Ev@g>(dW2M}em4`Of_0?IZxsB2zaI>hav(75zXjjRbAeXxy^HPJ|=aBu8hhV?J& z5+nVC3Cj}Wo@~Mw={aeLmBv$2wA1xEKwN5kD8*R%oZb+Z8GlRBP4~rw%eu-qwierF zrx)NhD{HyYS&B*fC-g3}U7N!G7nI1V7Y|N5k(dPS(~~dK~)7nxaKF{roo&r|MNGJKY*5O4c-OO{SN>3URs?^U@bR3~`1Q z)9Lc*5NB#JKfR7HW@)h~{cRnHv$fbX{nBuV7iqCsy5Uz4=NMPWLKUaa=MR+)SM_S{AXKJV!RH zkA-xYENsJn&YdI=lH3MxRkuA3uOCVmHegPTkTYu?8rA$}ExJnB8^D`$5a3+E%Fp`A zIuRF=te>gjauMAM>6ZmkvaP2%2*0Y+C1%Oe{8v@RwPa0;7bJ`>%joW8J<5Cfq0~oi*Q^B!pT%IGuyBNul zSv#zv_AwN8r^Sdx<41yj!J@tBRa|efUbN~a!T*3KudJ7>^Dya)u4@baW$RJg+!nQX z5d16F-?`x5dlvkw*0_4$zdslJYt|{apcb7o8vN_lDL6BWrtbv*hBXSSOwm<^;NP@5 zGyuPU2l%%vvmy9VE5W~Q%wEee@Ff!i#zv4J(&B))`DZfe>4pIC)VJm z;OAq}%=*-7aUA%=>%i}}QpbazLZ3a>kL34L|Cx381n^x}fdAau-wgb-0GsuNwF~<( zMaO*r{!43mOYmc!1pk#av>5y~m~L5nt#+;OWIh=M%KF;M#(t6A6or?k`(l91hX!-E z2@g&)P!Y}0&XEi2V<8>Z`yb(VG2?g);+62T-foCK&S_yQ{Wh1G>Y z6(=c|llX#r)d|O#37a%-*FqGRY^o=w+Z@cQ(yT6~%A%{>2lTV(W`?pT(^j3usb(mP z?xxNneJX|^>ohGU(+yCltR7m-OMgBdVo#Hun~l?rW{a%Tb=>?$7gY&G>Ekf+S!ZZl z({x2;Kx~%27-O5&%jAh`HZD#NeGOu7EtaI~V|HZq(QVu1|8<2BJkgRx=#_Qtiz5m+ zmQG-quaL2 zH?I_e%T;nFQf5V&I!bpZ56(JJQLqe@eqnWCP{r~wOhVGQ{UDmSRHVMfns@IImU65v zA13#o}f!PS=)3eJyDl(ieJid zoQ7FbO+Fl$jrHW5rrWm5kD^3e?UP%PGE2$SQM2!OaDD<61-n4$7giSrRV*dLBqWX7 zzoUsuMXDT^jDcA2x@FDMrJSuh*QLBDT*^7xs!KUHT*`UjQeGS`przhk=T&P7|$}6?lE`1Nu&8pC1sahkJ=wZm@yC@(p zrOD$_5Ehz+K}84g;G6|23Oa+*FRU&Ms#s`-Nk|&E&t(%TQpaL7zZrMw>8$0t&?__+ zUFfUBg}z2xb)i>=3w^C$Xjy~nv@^C5Sc6qs%*(F@xV$S!8t9&B5eD!#=fPptn^&c-SF8vRA zNpb1-ggo_3^02n0)ia4F=BE!WMgEUyYf*j*dGSstX#l6pA4ew2gVP2S`Ge9gtS$_y zm_NfLBt`yc;!=?+!|hbJC3rr~dQ9iPQFpF~_3?22o3vFA>l1$db!PzhlP2TgfsXk< zrCpQE-xGBHo3%~n?}hC=@(WP234rebX**{CCO+g5@_5$8!cV3sm8d^9FIrNbk=jaNZT|9U8L>d zB0aCIx=1_1McU~VNoDtfc2277Uesb<{xLw!yWQkpAk2<1kj8O5I4wa%K@yaHVRd0p z#Z(w3A!*!hizY4=sr}$qb>qYQD>|)L!)d)1PV4n>T5tGi$veF_y}7TJrnkJb@{b2T z-l->_2VoxU7l04(;QR_I3O)vn z{cs+;!g+k)=W)?|Os^09JY-rQX)(zu{jqMD$0_XzX?03}qHX!=l=j4;bkQh8{Zw0< zrn3$~+^xlC`5kcb@!2K$1qiFdY*2=pJUDegMZq61(J!nn460ZihDk^ow^L~7QjvNS z+zlA+ysXc4b-vJ@>&g3NxH?~HtDd}j{pxg|0B~Q2tMiRlo%~L~$LFr({UFSP{Q~g& zJUE|#ih}1r=@(WP235?1VG@$!GXn4~6{&Uk*twg`lW@Pz<3Ko%@4|U}AI{^4a2^N4 zc^vZcNWZ-ZS^lWo=H;Kc4{v#*`{ZTlo@o&V@IT0dvjJ2T+z3j)u(~j)VpRt%Gn6i=~e;!=@nj-9V|Uvjl-rZa3F&ag!| z!q1>o%t(}wV3hIe@`BMRx`)|o8x@TI10sL)vaN2{4f`*{<3#$u* zDyGFS2}$F2Cp2-XNS%KyUUZv-)Uw*@v`!4Cby7I3cHy+z`)SGZxPzaT%<|;mz?JHj za^O5c&+?Airf0b)>REn@w(42lNk?s_9+@)QTAVJt2gP-L+Lu z`qTW{$rZ9kxOP3g+NJNpeo5Bpx@}(mCs*OMOkhaXNB2yNFo6G59-K2kML{c2`i0en zK^4klH;j{+&X?+g3 z+(k|v0%2N&0sIYka2kV(f*2_M!s^1HifJ)SLejW>9GbXPr2Yc8b}yHxAv&!y!)Xl- zr!_2`)>(d9a%vCv(|U6lhUaXH;qeNQ+6WzCsg2M)^+YgIhf3#v4fNa}PreVrEbZfE zI&mJHY*10~JxugNmH~BPP=zdSyhlB^F%K47giSrRZN9p z5|YO4@4&lMq;_NTI4_^~Bp2$mCWh0R6i#b$IISsuTFvf69#j3aZo$0Bn&wYUndNky zWnOv=9wxG8Xfd4@Z6MCnV!j&iS-J*A`G=4jKj}z50j#V6F(cWpcyRWEih?&l=@(WP z234#9!z3idJ3wgSQjvNGAD0Y!A0LNg&CxZO8?M2;a1AaF*WePr1~TdSehp;O3;dy# zNnh&MKqh^eUjw<_zfdQgpMMz1@FSh%g8;{*2@=_T$b+*7R1`c9O24qWFsNeE43m&F zZtq1Cmx|Pr*!ka#PdDtc5AEyt=wDsKSaQ z-!8br>J4XnQk4Jk5+V4hUvi%gJX{4HB?F%?1LM~s1pUxoKwTJAVO=0l|4p47k=GJ3 z|H+r{vhYscO7s}XBXEBFE7dk;9FZg>joU+Dbg78j1eK69Zcn0`id0v83RY_>C*m4C zHg|`|=AQ7_tPPLNy71WC>yOR(yD>KRY3F3R{zQoDy|GbyqYr2?oxgh-?%)9_*#Kxb z7(|8Q^x(ni11btiKT}W!x(06g(h^u7v-nagUv{~&4B|#D)>7Mkk881Z{_|Jky+&Y2 z{tUvj3J?_dkLAH>4k`)~p!5r?3xg_jF{DQ~d44e(-b@9J+ilR&C7ap@ZuSH|+1;U^ z(C-XyJlqxDcvutOc(~i&c#w<9J^sc+9h|&bYfXm7Vv=9?O59e1Pi_NYI=|xx+(&qD zBK&B&;6w2A3#$u*D$Hy)^k;S>(>cS;+2T3Z|(HT!N9!VR__IhbTJ+UvJTjE!FyThQ#V2U&Rz(p7~CdrBZi&zy!jwbAm6#m`=0k6@qtAwO+ zdk_pR6><9{sV2pf6V+r>?}2OGghlwnR=0NlwW-5r>-K{gPcz&7?Ce{aQ1KR*Ojbwh@?HEhE(NU5Mogh{cf?rD&(G-T|>yq|u4A#?o)z z1+ld*Z9JVq?^$gkO{CSeZ$cxPTH|+wXa*%xXw8Gu4pc-Rp`9Iv^|6o+P@nh?y+w~@ zr-gMnJVlX)b>BdQhVD)@Zn$&+>K$;sXR$yhM$!`yJL@Dp zVMMxnDa3YKwA1$wh1lMkPO2guA`HMYbv=%qi7%^w z#_hY|?2=8*$4Fhf7UPuFJEGpn=@X$2^RP)%9PO;~NRgalePu<9M&Jf9t6$_s*pem) zPovv$1iX8AaMpv0f_k6})Oi_D7Y0?{9asOz4#457zk?Zo0q3KW$0-<*r+IL;fr{uP z@@gu}+2T+96Z~$+KY35>ikcr!MU#Y0HD2`ub$N|S*pHLt1qtt3 zAP2l_0UEboqnd2fmRNJ{>5gGYbjjI`;w8G$`?#?uQ&o2StGEqFbm!Y)cC;Q+JwE;r z6sJjrkw?Wk3hGN>pR4Ab!!R96=URrtEmrneBW-?xBx z+{Y5efa8ZOfNGHHME05-2*uz)uN!r*r>b7hkiGVky}k<5x*KJ$0d-+egbYU zv2ROnQrt*VO*YlKBR*-Wz@p-=G142bwz+p3)S=YrSB62nM~mwI$X%<&So#8Fs48y#rXwpn`+&ynzA(6CQ-{G#dk&M@{mf`IV#I9Wer{0540qiIuP?Od zz&c8}U+OQ_xaqIQ!}^sLYruMraQ7O{DQuftA z!C3?hBQw}+19*kAziGbq*Wh-9=$|KdDe-SK$@?lw6*#W zqyoZcxQux5&4}5=Lo21_9b~_5mq-3 zs#t*--0<~K(6}ARpaNvgIpA=O64}w^)@B`2^)3tv=APMoO`>^6d2`IGTy&q5!jgx05VSOy5 zBRKUH*sBo^pUz9#7EN8U<`rFqXksHq&2}xO;hIwOD?Xfoz}Pm|vwa~Cw7@9pAg zGA({u4o#Q7!#&M{mYK!SbS+uuX@t@8W2(A+hvij46lTkdZilLD+&o`pw>%N>Yo5C1 zO>*d{uVK?>0eo+K(6=9V@@(duKq^1=LcwpToUm# z*)7K5>R$8AKmAe4FRt|>H0`-9Xpca>ED7oHd}>$u zVn#6-UeLni!V6lUar;)Zbjg~(f?M)1+_Q(;uQML6O z^s$hR;qQWDLejXMg{CeQ=DFZL8ix?s!|V>=Wmhi`!MBYl7?JaMa3+F^Xg~7OIi!z; zbnL1I9C0dv;&KVPP z+6Z>OWS_nP>;kg(S7}j;lUMQg!K~_)~NhA{LV#!LVmrGVcy+X1Q>Xl^e6=*A=9y)-poKwJ8&UtXQgNo=n z@)~MD??aV3LL~@XKSA;JZ%~)4ISMCW+j|iryHY}Z9ZCgtsYD{7E|aW;dX;1))a8WwFoCV0|V;$JUEj;MYKP84K<+mp-LU$5kx}LxIF`nTq?{OxZ9liAwp!Y zlu+luqM%+Ykw~c5NmfE#C0PmeddW(tH;}dW5(-a?_fNoeK;6bBd2s53is;_~r~$nX zRq6O5E!)a??9g!;T>CDa{~ zl~8v|RziJ&to;q4Z~_ckh|2;318Q9!oHVG23i29iK<`79IzlCggrsr15RF_a%%{MO z#>Lpkepy027P5l+ibNuzzA9M>^)<;#sIN;_LVbg*y^>G}wfr0*7#L8u^5EzrGom7L?WTSD_IHkJ;_R_?@Lxf z-9^?u1+gU5J}3eM1L_1GoT;E9I*7c68qoVtrH)VuA|Ywqo{dH>6=tno*i*R@A+kS` zP%nl>LH$@Fkx)O8tc3chWF^$yl9f>RkhS*_3adKzNqmBZz<`>|gVO*MKmSEuLk;MC zs8UC$1d)&wKYxWrE*0ixa0}WZMD`aFYE#Gx>X#CUg!+|aCDgr=l~BKytc3avS^HW- zA=Erb3=F8x@!-4wDx&MjYp4Oe4^`?2l_2ngR-oAb0(HrnRg7#L75s!n+w zKZA?FfSSjH(-2fdP4XIQK<`79I>IA}grvC3LL--o)JkyYyo?apu9060!g2W5s!?&->+Ea= z;67*-fLaQ`0VpJZcb5u5cXU*r2PYp?L~ZgKKtS&UkU9cjTdjIAO$0`ng{0&P!U~BUIPf|eE?EN0F0cFG;Xg2?^2Pf z+ZQ`O-y=kJo&vBQS_Pn<0`NT)62RMA@tHW>0U*tTQwS=e4tWhAp!Wet9RV;hcAY_S zmZ6bLHg!F?mzE(!c3J^w4ut~HKmnM<4p@N(v+=`?6pY9%JUDlOis%*OHGqKL2OxFq zl#%h<0-$mGUQm~8Dz6`Qo7*EqcD@4eAhZfVfdX(43JGAzdaN&S2Y`k=I7Of$8Y8a( z1oS=tsbi;%oRBnbACE>Z6{#D+)hR)U>>>rAB@_z4F$%yGcEAcOx)wi8Nx_KR#)ES= zsEAgO*8l=~AAr;m03#i?0B!KtY;RmMR z4gmQ)I88vY`9od<2)3M z$h|_)9RTj&!C4E6pZ_DT0R;3u0I4GYMovf?w;urSQjtmzz;|k%Lx}8R1>g~A6@XR> zz|T-f05g|klO65=P{@PR6jVfA@)|%u?*ouJ0$}8Xq;b0i8o5-YZUOfIZnKT-5(S_Q z6be9F1z-jg62J{u9_bDMck$rd3o4?^$ZG%ry$?X@2!N6C`#PX;`#+#A*;K=U`gfnQ z+bIAWpj80cD*%U~kO0o!htYyN02J}y91kj@HOOlK0lg1E>ewkG<40FO<90C`xnxtf zfm^i`A+k#qfVNO5038*8S?qvw;O{eWF{WTd?&iU{A5=t_lh*(OdLMw)u~SA)NE){v z2Jcc~#s>-UC9X0?t#bQwhGJKvD$oE1bd}A6Qx{Z3|DatuhxDqJk>{GxoAt^rp z0`F2`z6rA9GlZx$q_tGA&wHVieXd4*>484q=fU{|R7AIum#sqjSV+e{r^6ASNP*(} zf1oZ|bHWg8j$DoqwZ`Tf&9H(%S$rdJmCs}C+YHzUc6^&gGjN#D=K2vhOl)(`H8@PR zyP>Uwc1bCI*P4P6naYDR8&pKkk}3oZ>thBx@^pm5PVpT+P~2sqkxSNWhf`!Ch9F(L zqqX>I+`Dz5hCBWj0!Hn!j#9FVYi@_si9b_lzsDXq5#y8a0XFRDKZkMgTO0uoG7eMN#e)l$Jjc*I7zp}a3Uo{{NxI?zf#;-@V z5zIIFCycF|7MNl1o*F3L5e9V?yAY*G*rfQ%>rkl4 znlr!+yb^uXp42Y44N{)=>h<`D5X}rDf9ahlDIDxxAhPVeaL>*rfH0Q_=TcCd|K#Z% z*2h9RcFbrANpb#zcd0N>#D^0_=%ADbrwgcv zeo8x=R?{D+b)IS3vGyS zW*DNwCR&(t?Y)B^!yNJ2eaLnvt6*P;wfL!K81YkdpmBQ-s7uzId=@U4xEV2WM%lH% zt1-L~KR8dph|J`{nFlJO$B~!LVSQceo(Io0SmV>6gj>b;2wXP6KDi1)Q%H7w(l zTQ@+}#e9CY5Pb8Hs?X1bs?3~;UOiPg8=hu9xm=&K^up~*PA4{Y z9`s*x_^(jdO>x4?vaEgwuR^mwyb8^O(+3pq|Ip4h)%5+V>qV!@RGoGUdK_*%c2I$^ zbYVIzqjB}CFrH(4h1*E3BfjxI8c!VyW5RsAzN)Bie1*o3_QSZ_Xw=+n)!J*sv8?({I-HX2(4PO~8w2msg2($w$Q3u+$JXc#vCZV{{)pw*8F0m5YJ=~E7@KmPr=fv$2mZP9~eT0 zDvR-fEG`ISF~Q_~R9ReT@)P`4yqxAtlyO_R&w!s~evdv{$?PV}9|5u-LMJlAihJ;~ zH>}9y2oFvKJ&UsEX=jExGfiy~WxIXlEKjN3|Dfgc$KigFXVL3RCe5g4;|iTK*Br7; zpFWXn^kO*Qz$P-M_#X4jl~@It1nwcF$4}B@3_awGTVUQ)=*3WYdBQs!J<<6}y2;6R zg?YnE45D0EA+=y+?xsuUXMtvkdGJK5FbBPUlW$eN#?i}V{Kk{P}) zhMuv!q2EVd5B<;N_0aQea{GQ3mJ5D|68yXytQh*pC>)#ws3_x)(N+z;w1~0~eI7{W{?JQ{H}ts-u7`f!CY;CU9^2)zFaCg_$h7x8=9xX}3c(~ikKd)oNNV)Zx9R7_ zPyhl$zmRTv=r_K>Aj*YZ>Y=}#E_&#fV}R6+mP8{uZ=+EU{j;^IwU4(}#waOf9h-(UR!MI0E5ATGhmw6i8p|9TqI@->0YDn?J1(Fi zx{Y@BS55z3b-gG(L{$qc@^!`!pM$q-WfW4}(SL71J!QdtAvMxwnsH52aCNCL-v&2) zER&ya)$Na#ix>tuD&z|&$>*p#m-11rm{+qpm+@j|&xJ|m)ACa6a#JuOAMoJp1{Kkj z*!DNM(cVMGd@d2qUeis(ez*-171rPcMK?JZQ57b5hmEn66Y%eBLWTJ+pZ z+n6b$?%eJd;G;s>0WI465zP~(i@NjY$Ny#m1n6RZpHJ0gXWUR8`9Dg zo%jW&x>xkV!-iaYq+OI|Xv!S|Q{}ET`s!EJRADF`L#H-P;k0}rPF8sjs(#To(8&@y z^~A-k?#kEkxcBc)|DlsC#P!P_2|3B-lw%}HU!v1qEOd2OKUYV6q04a2WX(&zqACA+ znC^J_LN8re$I=KZw+>g;x_3YDo>wWhQcX`c#!MP3>aOEk6dZr!L}T6(IIn*Nr;1c4 zKT&hUE3n4%ZpReByRV!OiCtXl~ zxVm1nt&RIDh`lPP#2Wf9%zY7Hux4nUik&ttgF}lU3%@88pjD z_d;i!FRFUHdODJ*Nw%~WsF(Jo3Kqe)J>H+o~)l-J#=rV2yphjfyY?w$7E z>r1aAuc(1ej?hU?x?M$>-|`y&52qs5Pfogz7v+SUtHb%|!^oLx<`1|9-|mE|)!)zYDrfSx&W^%E&YhmP zx1u}dPFo(FlR@$RJ9)MY>ti7u`)A~YqzVTt9VUd@54UI++9X z>ijqgyuf&M2fkOtEYw4+e0FM^g^@A(wndmH^0tBvgbnv>tPZ(vu?a-` zK6b%D?RO(y?<963a*<47KB$O3M>}Iw(|<($1vgje_5Iu#(mD4HFADonl@h%K=1uMg z(GR?N8N*+|J%Ua|?`y7x1p zSj^}C+%dd*7IXhNckCKEyl@HF^X?=2a}n6{A0k__672YmV9WPT1is-o<#WF}ev%pp zY>sV)$q?l+Xq0hZ30&9@j5}$R7i&>|3_V_1gy!EpjY+_{Q`Ni+ja?7G_+$UL5Nkrl z5j65?DEF6x`>Po{%%<__*)aaz88@O{r=rtp8Ya(&0oTTl!_CyJ@3f6B6SLuxW!(Jr zzqlyBzI*9+{dV}Jj6J37MBRW8rb8n7W=-~78X5dvwdcZmIwYcRGvB4L(e_}Ki<~wj zqHiDHhiBy2HjdV#&N7j9C z%FD^>J;3jxiEBk}KV#o$JY66^FO1AJ^M~&-(3nva_8?M`Nl*1+3^6+5Bn`%pH=CLE z^tcp_bB7x*txywC_aZWbeB)?i@kjWKP(o1WTmNY^j+r
wF0;c(0TD}3W5%t=A&4u0ugi0lI3XQy1%e}(bzPg%m7>(Sz$X#M=_$+Mfd*ta$#g#WA0ZYv7-Ivyn8si@MIWC5`eze1|dZ5WZqGk}aiCtu>jxzQ^50 z3MZ(#R;z_nos(%IGliiGPJh))ci*FnxdQhV)jb01 zMrNY#+t*z7TG-cL7(`};=Z4GjTW$X7CNhtE9(iY(FJaOIJM|X`(fM7vJ$Vgk^szBI z30}`FnOo^$T6tHWclhD8;TS5l!kOA3_Y0$8|9^S}Q|saTes2uT3;PCAyTEs|&Fp_& zaIWz^V&>aT!hr&*JxRCUFG6ay%lkuA#XT zC(u6%O1EIXr}zzyGvE2z@x2p6rn|$9v=A-$c zrBhza9hLoVx*f*SpF6_*Zp%?Zii|Paa~o@}-to_9_~Ad_W0JXc*FQaEry?_eZpW@e zf3wZ&0qbp4&6{)*y(FsSOFZAaB6HQE|K%I3`%_-4+)K^cmmRHDp!i?=4OW?DEB{vm zk;%h+Qt)pwFGm*t4nHsq-TVf(nr-%m8>~U@YAjT~Gko8>%++Tc%{PGj4!^-#b1+6F zh^8ty8;HzXo^ReF^RjJ6^9>-kaG$ACecb#BOT)hhuez+IkBzV1G5<5QXq4n|WF}vf|7b)+PuFbF+B9oz! zzc`j#$6Al;5sTnmhBL!yJQMf*xp~%|^RO2&B4Dhbk()VrYs?qn6S#l}HWE2@BJ+^v zo7>1r;o2MY^_M7-dEa+yY@KU|-Q*CdXn%Wdd5@U)4+^_+0g<&7nPY(1xB{zn?(x=? zJz=*%r+q!Qyys1^E9~ZXszc89d~;h_f8g>O%)|E;ncF>u>;U zXPpwh!EyosfArk)4wx%H2uJff)d1^V?1k)PorF7}qX5kKZe6WsP6)dN0FI;E;0*xS z-MXrG*ew8XrRSFShiP^XyHyAHr01L4+d2nVtfK(@%y;W&orLRO&@BKkh6iWk>MH?o zkoCbMVYdLl63;EKhPC(puv>M2!#v;Iv#mj!kK!vbmw9e^^{oM&!fpY8_tNbpB#=AC zx~1Al5&-zF=a$#R`s(v=wCVu=^n7zCSc{H6#EmiUWY2jWtOu**5dheeZe7j+z-iW3 zQ`GK9@UB?Ts|j@D&TsBq>oQ#R7UHb-+?a>R+~9fS^|tOV346!|ToUE`n(up#6pkIs-rp0JI`+!Q2}$w(3mUmpm}jpNVkUOSxF^ithzRcq-}I}u_onxRm-NFc zz2_3d|GPcmeMHMGfv5h1-)TqR$YwMT&UjFK|LHRDdQUj0Pgd89(qgLAo^XCg?-6kZ zV~Nr;Xj6N_8=Hr1ZAa6l_JqHD0Icd?w4F!2+7q5!uS#Ef1NCZ8cO&ekpG>3P6aMCKHEZc$TGgKLr!RyMRP71duZIi@noK~L{Hkh)J!(&wZylIb zd&2y%2BQ58yWpTccsst>M(jr9QklXPpd$Jn?Tk@P{{!`UPgwf@V^3H`k)IjKT)jQv z_RGC_S$$8Ka~PPsJ>fdIJ6o~<-B@Z*cqrzd-V>G|@~J&x`5~X$6K0D4b5Hmhq@?$R zuP3Yagb7ja3G>4(y(fG#9n_xion+OX@H(<;PxwKw<$s{UdQW)cP&E+PKimKl_Jq^e zWYT-WBeQ(tvoy+&$wYa3dZ<0&jwv;Fs+td?QSAw@n~p#3g?3fOX*8-m;VV$5kg>y3 z8r7cggx0c^>{N964-I-x_!Z3QU^BJKc6y&KdQaG@_!k%D*Y^+l={@1}C+tLh^v946 ziRjzla?hoaVWYC13+w5Sh`t%$rLh6ocahVEMD!iyyBurmxvk1Yeh^6_`Yxr5-V;9Q z3%W#9m8-5d@{H(v4;}TMu)w{&=UBBT-1-f*wqZ~BH9Gry!m5HLUwcaK39C-z>@E>_ z>X6=fTRg+_OtGY~Z@`|gYC(f6qpD@e>Anm0g#XP&tu-YReLw68D?eFt!<2l}5cMT=FE|NyRy>$5fpknK8b{-Nxz%y=!&V z{1yE#r-#}T9^3R^LiAtjIczXyef=*HGB46W?+M>^VR&My$-UqA*kY`&Hg(nHj#qjy zwi)kYSLL6RyCpsJp78s)Tm?N;FT;F~F6LvH9o0Po>qh1>-?y(h2J2qX*IyV!W{u~D zJ>g#1X0GlgGB0}`*c0A|NfY$&7YNaLAKmnx@cX&o_1uytZfSfeG-^-y$$P>vRB9)B z4%ibu77vQSUg!}_ZMg6Iz0qn^*f)^ceBaGB|1|&UCNlT<9x?Ng_ro56)Lx^T-V?qJ z3yYVUyqs0}Wq$Gf>X}cR_%Gp9s!f)8;ToF8fupzu^X=z1IL z=_tM;bGPr-$2_*$e3cmm(t5@B9b|ru!DHH?5~#KLC%Wl9;bnMG4UV86Qe^5}<++VD zhfV)yG?6LwJtmnscmLBv-9co|qnq9n{_fMG^yjFO-|G2dPxza0|I0U6_t(8v*b|;U z_GqmF#g~60K|)$({`dU<)j(vL;a1n%6E0eCG~d854DlP>YNo3Nmorfkm2ZXbdzbks z*1X_YRQU#wKjt@BYu@|z|7svIdp%$53Ag*|XubjDxhuR>A2-uGkJg~-wk~s;-(a&D zedTBkBzzK)xyWy@)%@Vaqc!j|7n%F~20P8Ew;ruQ)y-)68*HHVgq!U4?$_01sk%YR z{7EmpC%nK4T_4pQaMg*>xjsH$^Y(;yOaiYLOpcYvoJ6bM6aF2yzs%FSnaK>GQSS-I zS64Gmp;7M%zg3PGDRC+BTi!yW-V>fMD-6(|4l*r~+3xvbPk0rUoxsIjo>tmzzwg%A z+TAhi=7$uS+ShnJKVt63Wj+{9R*aen>aHC;ZN|u$zCO5*cTucEg^qz~fLb-Rc0Fd%n4y ztiAE0_~Jt_->s{)qjA_R0B|nd^q%lj+rn-EfNMQB>D9(D@=OkWFtdQW&JW^XWB0N`n!8}@|HUK4h!4sep^i#_2_o;`{$J_+*N zuqRwM5q1jze41{0Px#Uo!fpY8`#d-73BP@5*sVIi?CZRc6Rf68AID^M>P3j-dD8U9q0{3+SfzgyVg^T~zrjps$PTJrC>&@97ct@Rus>`?>FX zj`ixV|I1f)uQAxXSs;eInbw1t9}97kdr(; zU%gZRBPDylR8g-xe^wl?*$x=z^X`CieLmanfmrh4c@!$Y0S&R`_9PF^7Em#8IPL7L zUJq>$1DE)^Gd$-ta8{#(T!rHkG4L+mxwq#mBbRQcVeGL0TweK<_jLAhRo5pP^~S(B zXv>0sF$!}$cJJE{!A!0P*BS)Gr!WA1{n{Eddh$i0UMH3ie;dc@ebWL&%%}|Vtln3}Aa>>l0r;Cx zR-ZpO;A7T|#9QhQ0k&oINqh{=*fKPiPq>y*JR0?^H;VS+I<>%#{&78WZN^!~IfPs< ze+&m_DX1vv>FMibdj@|vMaeARTHCYwqpQX_;Cz$sob;TpM;}hWWdmJK=m%7Fw2R*9 zDSd;MtFXM+%Y7P4EgKq)1GG&YGg{QE_Y;PO2s~S9>?R1!O|+~36c*Kxt%$a6 zMX<>q84B9ko=#g5H~96^j~6nYDoQvzQ96!p@-%DwbW^-Yf;#(MFQiSLbVV=E!Y`s= zL_J&EyJ>roCuEaHN~u@jt4dM2l^!k1;nB2H(wpQe;nGiNJN7czj<1+s&GtKO&3nVv z%qYRvy#u|L*2g*_Cw#q@AHR>yA6dk}XqTQ$2YK4H;%`=}O%d6tnhvFB(P0iIOuaS> zyZwv9V8d7kW83LS&FF9$y?Z27ZyUUi${!gN6+>@T-&cI%G`? z7={@0Pl9sXBFuEl5NC2t>%&FTJRRKE$6#$ND7D`2FGN8{?{ph}38YgvVm#k$T>m^N zW;f&W$YAC&MdBiV~fx2ASU0UPz zCs^(ilH%`!(54iUQ?;lB4>!T0KDCceyr3JX9>~cHa3d%;lUXQir>GWol(O2 zSV#vj9F>|6ayF(I<yP@5*0j-b0=**yCH~^Zo{}ziK?i zHvF#|bA_|(-ijWX$a+XKVFloMJUBh?L?UG;(C&ZBTv|j~nXlwmjf3tZY4N{mEG^!y z^kp>ZuNsegS_r~5BA3a&HiF0gm+vvp{26eVgy*qUdb~^z{Z-=*S9>uO08R+~E%Wc` zroU?ZE9RkxkzMM0p#%qud$ahKxt;Rv?j#z~xdn~-tHuYKS8Fek_+K?{ekg3_l;h07 z-$6&W&Y>k{x@?U=euic`Z-GG5O4bFNLKSuo%1pF8^56*T_ z5p7F5y{qX@tF9NNqo|T&wCD6+@P~cal`8r$rT(HmCcRX*T|r+tP2apqToVF*r2&xfD-ED=dox0~WK-+zz@G&D5Xsa@m}kAv249D5VKN?WGR*u& zzv2&U!c~^EPE%8!Ts*t$v@&G{8lknUzzv=8H^vAWe-~R~Zx1S>C(+I*VSR=_*drhD z>l|lJ$I{5aMx+~Cin57bqdF(xL{Z`7dDUqtEq@(E|0U*B>}^S)+C>aEj(Z=Llgttn z-)~44h&=okYgn^77qymOOy-BhY4loWF3)J(9_5c%j>{N2DBg|ptj-*^u#d1qj_@m! z@l! zN3%6uFc?Pu_Hx`N!_w*|jIWYEm7$w-}CSpt}7?D4DaLl_1b~|}S3G2%~ z_4IYRqHL;#talIN*w@fiH&3e1JzL zPn?2hJv$8FdDj>{b45Or3$Ie=V#tsOnl+XR!G&t^o2{SZ9d2nY=th z&XgzB|HImQKu1-5;iKo4OfoZfnE(?hb4ex>h;(K`=s^;CZ=qMIDG)l+qzNd3AShx* zKtw_8y&))w0)m2yD5$82g6(I+uJ8NKxpOmv{QqyQw_euDzI%UrpMCb}=a#uwzQrYd zXvJGx(ub+HxNzZ5AEBlU{tzvFm;O4_@~MOL-FoLo!Sk_$^jGwrOj!w{%6(RKrs)odt>^(SY!lfXD?J#w9C`#epKpMuFO{k};TnaCNT z?+Kc;Mh{9~q`#4b%EaR_(t}jDy+C!F)=;m|C*X=!8FVmlLI~g{g7)JL(5})yf9+yz zF16KmL%T-b-uq&0Z)y*I0_{4zUsg;j=Wx+>5|#WON&0&I{;Mxi@|8B)aa`m`zfG_8 z*hR|wsq`W0^gH#*C>A#dx>_1U+r3nF=?3LS{pd&`*e6}(X)3=8L%CV+(o=}3vZzi# ze^V)=-KzhM7E<-#k?(?NTjK#JWwiI}yD_#Cl+CG>(eBWH_~0UCe=23P59tf8ccWEq zr%@@ReN^v!qZ_SKuAx#!`-DDVt{bgV?xa$_x8fQ7(Vt@N?iA$>D&^ZNUeITtL$aaW zO8AA!X)mA>jv8xQ3c;?5=OTN3Qy6G^Oaco0_37 zBA;(!n%MU8Q>wVWr9Wk~ycS=FMS@tVW#Ybn(xR{c7C-66;}vDVZvs$qtqIol^ndhE zSE~6mHbM&IM>P1HL%L=(#vo;VI*vs_KcJou0_{5e2tV`w~vh)A3IDr-Zn+qM)jW7CcXjC%%Ej??zh;__*qK zEKa*Va?GDFZNyuUcg&J^#vJuA*RJ|MnHAQi8E>7YuQhjK6vg7DCsEMZ)!t(+ZyzhF z8e8%jU16DP@sauAn~CW?(n;ZJ*W{eprBa0nujF}1MB)83;S(C^Jq+=cYa$BXpn^Az z(tk9+MK_NxtPG&wylde}nlmP$W2wcvz9g9Y^_@zE9a*~E& zzxdx=`nVP?lK%blQn^g0#S7QKN4KQCtuEzby=yT%Y5bW>`FMsFf3m|)O?n)CD1x;j z)*!01CtQoUNw*#nqM5XaD@!{qj3TD5PwKxUu}=%RNw{~m5O(d3#>1ZpQM)Uz8}OQB z4Y?X;-^{%mK^jk(XVu*J22G6FE{@WG$|XK8ae~E8tb-pmH~oIh{N1 z=W^xSez-{-o~G(w{ysnbd07}<9Y}xS*w-iwpRY`Rkul4MD$`$Ld&`F^(_iL{7MW2O z2D>FHH%xoDG?@J!aSFa2>EDMV6!0S+JfDM#yb07Z>-1M0g~(gvVtZr8a+{KOyQ|n2 zQ%EoQPf;BiRh`i|L%{I{vQdJuF67mbZw4sdkeP`BV+=#ISH$caydC-Qxq zW~A=DoQAQksX||h$VGl#8hrLK5}zvhG%;~Ag`eJ#dx?Z1^{9oEsaIS{dd+!Iysre# zEbeUmCMiDGf!f0-B~T{3(gaGM#C7)W>*ixTy8V$gUeO=bB|KC1M^2PZf0WIl`lCDx zImg)9A6I$tVJ+1xf5>JL-=J*C8nTJ?$2dGMJ%+PCN=00MREBI3kDp#dYKs9Z;?Fjy zKI&;)PMd>L2K)4S6Ezr|#DX&Ns^z1n%FFH%?%0Ea;zpnM=Xcr|Z;%9m6GXUmsVaPJ?S!(DrFE9@DxD?SIo z*RSARbG9A>dQri02Cs26V!$L9TjXGJ@1u4&1D3nml`-uUcog~fQ^B?it~pu{Gm6Yc zX68`_uhM{9mEf(@-i+;37Sl}Re@xxda_BY`W6ijY?V050{-BQMA;H^%wPU9tj_z{I zIdT&d+*ogOtW(QOMSiZU+j^}To1#^^ZoR1E{wBDi!Jfo)-O60uW2eR@rpv#MI__?Q z&*Wkxs4a?<-@UGG*IZ0GYKP*)`Lgth)gZWU@Pdodedy{AeO7c)x(n2CXA?ZK1I?*U zX&s-HpJW-DLihHUS+S+i(KVuu`}u<3D_6z}pt4b$m8#fssr1dX9VLnBoy|&wCftbx+h{Mm?wVlhO9gi#!5-Rr zPhyB_ZJy~`4AI)bP;HK7Cy54Vcs8D^o?9!2u*KZqd@Q$ox0b0$Ok<5_~{Q--kIu4z9SmY^Ss@ zYAevdY8Mh$4z*g#bsFy%L|T0R4jwJVlKLfpPh;VVhR?j2O2uv@tA5%<6ra$7h5jBU z%Q{0*V|GXR_8_}65ze@|m=x_UC#7U2e}^O*4KZnb1`Kc20~L7|dE$1rn1T*G@)m7g z$kq0Av?4#B*q0%s=+&xEY!v-OP~?x`fzy`V=X?ep>!s*q$I&M87rF)m-^KC~Zy@8z z-$Vo6W3vY@3?z700q5_b0dH^HL)XKD8pJYtWzbS`KM@(cRwj;Ne}Yic??t}FO^V(i*ffg`O=p0F+1xXSo9PA7iLR^T(r9*DzlBA$i~ zggtLAcGfYEh#NiTF)C$;Sbja4MYVTnMU44JX&^hqivB5=GWd}Oyen(3s(s_7464vu zcXp{YWz8;SkVk{{FT-Hn355Tj7@BDj%uM$B5o0f*M4P>c7V=B#GsnS~r2w*eXI#a| zD`T5&&LxbYtI0lOZ()Cw+Z_8|4q3U2vA0e^D)Ti)#DR8VEoLdWKm+yU!BYe(l0TxJ zZWHmmA7Z$@%}IclAidz&+7HB>R5WIOeQLSwws(ws55Jc{Oj^=NW+n1FQ^)PI{b0%h zCk_>c$S-kqkKBMMmr=*OtA<@h18%MDC%^paqQu)=-Lw0@yj0@-G~m6S7bRh%;y=mwo&2r)^`k zq8dP!4vo$Peo1}i5cskbKvo}v73{jrZ1ndoYV_lBX5n30`+doBX0cB&fjkkjKj0H8 z=4%X&?Z5OjAxfY`J5T1pGZPf;Pd#%;#PfcL;r2-<0owm1$JYKR=A@$i^XjbJJmBh_!La6UR2x2@}X1k=>p6ID7jx!d}S6sEd`L(e*x))PLNWw zrEw>kv1Ti#<+A=x9Z0Q}WSWOzC;P#+DMBz2+WSu)JQ`Aq92(nv<(oDoTDJ zzUEXVrI<4q0DJ47m@AkF(QM(t^8lzwUPYdc67iG-j8QTkd<6~^-@gL2$m$JtgPV-h z86(Y)0m!V5?!&E7DBv=e2Tu!7k$i!AX`G0AX%mk-cfT@5)x0m(i0!4HuAm+g2Jr;k z;d@x1KJ!XomIBE7&E5q1gQSM8gm?WQ*x#@irDPs3>emt?^I#WDENoQ1e>C$@tWocU zoh-vsDfqe^1uf}q9z4fEMe+;e=_nCTNx&Gw*hV5<)6gYPiGDZ=@l2hT5{B6&3R z%qS7hn-#-DJ|}_5+vsAcF((X4jyUyjq}*EMJ>%L{irEP?w8%e3#py*tgaRwt#hzrl zA1XWn_Z@XJr%V;0bOYhgv6iHC`My^mw7{4OUGBjp^8{TEb)R&Cu4=S@qOMy3b#w4c z>DP-d(hQ|$t_amwgXtySU(?yt^tu}Uf*p&&I<-X`(R4kP^Rc>y>^UD@tbB&btFWMi zYIee66`#_X){fC)&#kb?G>c--OgUxzj=D|EH+0XsL|s!qHh$XnE1=8j_;H12wUMhs zW!0Tfh8MNISlNxrhMz*2osaoH786sdCpVg2O^ZJtgGKG9L1Pvy@5K$<^j_LtHUhR+ z_%>Y1)=eey_tKVI!ce{MQ8cw3i|cv$XK273U#NZxdi;M4lJ>%&4F+APVWqkFh7gRL z9-;bfehv)=je|j>>la?ipfe2$(fLD-zZ>Fo|M=dYUqXWj9ET!LjJ%Y=G8(k21cTiB zkHvy?T5KD2SL8sKSJ}N%A$3lChiI@6XUd_b`41)}RyDhneX5zVX!gHr5-sHL#FW5d z`z6Kq&*0D^;4?iKHI^SFcqhmc*kq-6cWIe(g!g5wF-nXHD|2pzpxf+r-rZUoKXsPa$<0#6hjVoN3zT`_>j}skQTUjNkL0$%Y&yQs7S6uo|z=#JtP(? zbc`9^Loz&4T*yT#i>!VhxL_8Nhx(h>&=>2V`u}i3NC78=Ja`@h70K(#OXCDQB>|)R zJ}~r4it|7476Eo^PThIKD1&etE1PzRuHQ`l1kAudQEH(vD$A{D5l`G zFF5hYs{TSlik8u9I~p`A$Uek}tb0vI56iMu&Eg^J5%~~ns;8>)ko6sC_N)wc9X@1j zj@s`OF{gtN2ar9A_!bYI_drGRZ0Z^0Mfh6cComjhxN}uC?~z!7tlBY8ER~vL@()t` zNOOd6#ao!8snL>7lZyPa)bZj=R-LcTVv~--yE>gFR~0~4_eZ2-O}M%Y>OR3FoK>$C zh7PO6)wQB-P#C)UQ?P$y9l5%J)Xm%qUBhNaV)LvM%XI3NH-WCvTM=y4_Qs`KLtPZx ztgOcKLl>ockh}MAv%eaRV>tJgY_dM+1FpfQ(Nb}gkiL1byBS2&apA{5h9R)4v zHXb}1K}GT`^3LeT~wsb{&a_)O;Lm(*u&g#(L#{^$YZfK8AU?%gW` z)g7L}ZiddT_qy>5h%=RF>b>sOAkI=Eo-bNA5KqOyO@!Cv|9zN5_yAsbIdN4h*U8qbk2JC>+SNr}Q$TC-;MoW&lG~G~ zk3>9gcnlA(h$WE4&70>cZip%5enDz6qke)YZgMov_(vfapU(mKNQ3ZNPmhEqx5{4g^C~qx=ALTHR*Hyxgu_ooaWWtYg@W@Ln;V0-? zo^6MpdWS4;k%pi4z5|wL=HX{9Bg?m$ho5zC6osF2Zxn@Jke!Opf`xZgp)GGUgPCUl&L{9j$&`?*CzuxwhA%DP*XHzDvQPWYpB-zKK(*4Wj3J__v~pDw>U zb-alaKF{+V7SYYG*wy{84^_yTh~<~RRQk+Ay5B!LnV7C%v#ZlI-z|v=3wB9mQzT5% ziZP|DpDLsmVg_BchS;+H$A8CTG+_S^_r!2i-A0b9ju%`_UsofC9i4cTO&VrUm3lye zjp$g<)eLbp5ws*8|EK2ZPRMa~OydmNf?}$;(FxZvin6g4t>_jWnYeH{E%;`V@D18F zteLTpWpx&Ar$j3R1qWP2P7=%C@fZBW>o=#FT|2sN_30!soSR8^Jqa$=y%k zd}?_&FznS�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 QoXFX+(RzQ(`CP>R1IWSi4*&oF literal 0 HcmV?d00001 diff --git a/otk/font.cc b/otk/font.cc new file mode 100644 index 00000000..91f8ffb6 --- /dev/null +++ b/otk/font.cc @@ -0,0 +1,128 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- + +#ifdef HAVE_CONFIG_H +# include "../config.h" +#endif // HAVE_CONFIG_H + +extern "C" { +#ifdef HAVE_STDLIB_H +# include +#endif // HAVE_STDLIB_H +} + +#include +#include + +using std::string; +using std::cerr; +using std::endl; + +#include "font.hh" +#include "util.hh" +#include "gccache.hh" +#include "color.hh" + +string BFont::_fallback_font = "fixed"; + +BFont::BFont(Display *d, BScreen *screen, const string &family, int size, + bool bold, bool italic, bool shadow, unsigned char offset, + unsigned char tint, bool antialias) : + _display(d), + _screen(screen), + _family(family), + _simplename(False), + _size(size), + _bold(bold), + _italic(italic), + _antialias(antialias), + _shadow(shadow), + _offset(offset), + _tint(tint), + _xftfont(0) { + _valid = False; + + _xftfont = XftFontOpen(_display, _screen->getScreenNumber(), + XFT_FAMILY, XftTypeString, _family.c_str(), + XFT_SIZE, XftTypeInteger, _size, + XFT_WEIGHT, XftTypeInteger, (_bold ? + XFT_WEIGHT_BOLD : + XFT_WEIGHT_MEDIUM), + XFT_SLANT, XftTypeInteger, (_italic ? + XFT_SLANT_ITALIC : + XFT_SLANT_ROMAN), + XFT_ANTIALIAS, XftTypeBool, _antialias, + 0); + if (! _xftfont) + return; // failure + + _valid = True; +} + + +BFont::~BFont(void) { + if (_xftfont) + XftFontClose(_display, _xftfont); +} + + +void BFont::drawString(Drawable d, int x, int y, const BColor &color, + const string &string) const { + assert(_valid); + + XftDraw *draw = XftDrawCreate(_display, d, _screen->getVisual(), + _screen->getColormap()); + assert(draw); + + if (_shadow) { + XftColor c; + c.color.red = 0; + c.color.green = 0; + c.color.blue = 0; + c.color.alpha = _tint | _tint << 8; // transparent shadow + c.pixel = BlackPixel(_display, _screen->getScreenNumber()); + + XftDrawStringUtf8(draw, &c, _xftfont, x + _offset, + _xftfont->ascent + y + _offset, + (XftChar8 *) string.c_str(), + string.size()); + } + + XftColor c; + c.color.red = color.red() | color.red() << 8; + c.color.green = color.green() | color.green() << 8; + c.color.blue = color.blue() | color.blue() << 8; + c.pixel = color.pixel(); + c.color.alpha = 0xff | 0xff << 8; // no transparency in BColor yet + + XftDrawStringUtf8(draw, &c, _xftfont, x, _xftfont->ascent + y, + (XftChar8 *) string.c_str(), string.size()); + + XftDrawDestroy(draw); + return; +} + + +unsigned int BFont::measureString(const string &string) const { + assert(_valid); + + XGlyphInfo info; + + XftTextExtentsUtf8(_display, _xftfont, (XftChar8 *) string.c_str(), + string.size(), &info); + + return info.xOff + (_shadow ? _offset : 0); +} + + +unsigned int BFont::height(void) const { + assert(_valid); + + return _xftfont->height + (_shadow ? _offset : 0); +} + + +unsigned int BFont::maxCharWidth(void) const { + assert(_valid); + + return _xftfont->max_advance_width; +} diff --git a/otk/font.hh b/otk/font.hh new file mode 100644 index 00000000..c070bbff --- /dev/null +++ b/otk/font.hh @@ -0,0 +1,82 @@ +// -*- mode: C++; indent-tabs-mode: nil; -*- +#ifndef __Font_hh +#define __Font_hh + +extern "C" { +#include + +#include +} + +#include + +#include + +class BGCCache; +class BGCCacheItem; +class BColor; + +#include "screen.hh" + +class BFont { + /* + * static members + */ +private: + static std::string _fallback_font; + +public: + // the fallback is only used for X fonts, not for Xft fonts, since it is + // assumed that X fonts will be the fallback from Xft. + inline static std::string fallbackFont(void) { return _fallback_font; } + inline static void setFallbackFont(const std::string &f) + { _fallback_font = f; } + + /* + * instance members + */ +private: + Display *_display; + BScreen *_screen; + + std::string _family; + bool _simplename; // true if not spec'd as a -*-* string + int _size; + bool _bold; + bool _italic; + + bool _antialias; + bool _shadow; + unsigned char _offset; + unsigned char _tint; + + XftFont *_xftfont; + + bool createXftFont(void); + + bool _valid; + +public: + // loads an Xft font + BFont(Display *d, BScreen *screen, const std::string &family, int size, + bool bold, bool italic, bool shadow, unsigned char offset, + unsigned char tint, bool antialias = True); + virtual ~BFont(void); + + inline bool valid(void) const { return _valid; } + + inline std::string family(void) const { assert(_valid); return _family; } + inline int size(void) const { assert(_valid); return _size; } + inline bool bold(void) const { assert(_valid); return _bold; } + inline bool italic(void) const { assert(_valid); return _italic; } + + unsigned int height(void) const; + unsigned int maxCharWidth(void) const; + + unsigned int measureString(const std::string &string) const; + + void drawString(Drawable d, int x, int y, const BColor &color, + const std::string &string) const; +}; + +#endif // __Font_hh diff --git a/otk/font.o b/otk/font.o new file mode 100644 index 0000000000000000000000000000000000000000..1882f7f1d37f0da488c4ce8eab49681b191427dc GIT binary patch literal 419488 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 z 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 wsk|Jf?`#zxP`Qa%g8s&N8Wc8nHS#2>o|b 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

H}R%9JEWjpra$BgC@zM4AheS;NPn@!l3 z-S{boa28jwP@1r}Xspk_KP6bsd2P0G-j0KukK;n;OS#2)y|iI}bAH4joE+=(-057- z)!fcsc#fBNkB^uvUD%h3IhcoUu`=7n`uuy{+57?fIPcHF9L>p`%Wt`kKXV^X@){p7 zW%`hxi#7Q+Tl0Mm#z}9 zvI{@tU=HU5PT@Q*;c9N+4({d={=v(o%hHS~M?8Q%GjUN#) z)I65c8J+q0>**sRrp5aFd$@qB8N-V#`AT?SRo3Ol+{-_Bfst9l=UTBV`|>l6;S|o} zcU;fy+{fd*$Xk5Ogjqv=T4rMuORxfKvkBX>8~gEdj^lJL3&(?4eI2(=j^>vLq|A4qLJd`|&f5<2U@5FXjljX;_4x za~!90DOYkYv*rwY3h;GSW^FcSXZGa;F5qsS;8oscM6QtcA~P}{UuS)`;}@L9xm?ao zJj!cKo;&1aWNyC7GOWr5e3zZro1bzNqdA-3a4mo09{$dAyuk;Im&g5KdgfpuzQIbY z%VuoP9{hyEIe}kuF<0?N?&2Yy=2hNhMBdOl2{SMo3$qO0VHeKfGXB7=+{>f9z*~I6 zZ23Zuf-K33tixt(&mJ7a5&Vktxq^FmnhElU+%(M160F9i9K|)1&?h-xVH8WTD%?Ig$H`*0}7a~U`DBJc7UBTI(djLgpxY{2#$%_&^W-8{}K ze83mp2svq(on={%eK~{^d5CBEgfEo}dyBCWJF*YQaUOT^FfTGu>98*?bFmmJvL3tg zQ!d~d{>Z)jgV&h2Ovua4;;g`T*@Kh0h|9T|zw#un^D!gKhP?F5#qw;(ejLS#jNvX` z;C*I#GwhFIaaLkOw&Euo%Z>b*dwGyI`HU}@3wilil2!RO+p`acaw6w)1-Eb?Pw@ty zFiH84pMiNqdL@r72L#KJj}Da!G}yxG4xB$Ow7w-EYDhO!glPz0UXI_&f&LQ z&mBC#lf1&aj8iG}jAVM|WHFXyEjDKt_TzBQR zxt_o9FmEwlm5`U0CHWScupN7F07vpGuHbfFiU?K1zC;F`5C8kHMej-kMU35 zXToYBFEz8V4D0ek4&zwPAJHOyeZs#GM4*43B5Bg51XzKAz-NCTJ3J(y1i#{ZuH+W} z%0GCO_nD$;$j!+bY|7T`&Vd}wX_2lIfVCNQK#weCx1=eO0c4T)Bgxa1qyX2M_TqpYWwNp>HvkXI0i?i&zUsM0{i(8tdy35o68ElScga`>f|bVfpWU ziDJzW5%K&uB2Lcde_|~j5%J&a&p-Fy{QUP^>0-}QMnq(c_4!=UT-Ds&+}k|PJjuM= zyxP3qe8?OTC+v?O>+}6t%sI>@%%#nB%?-`n&ArW|&Ew3=%*)LwVslGGL_ELr|MH?@ ujf{wBXl`L1YF^Ae{D*n$`>)UQ-c4fX=X?IY$0V;OjD7#}KmTtspZ`BCE*<*- literal 0 HcmV?d00001 diff --git a/otk/gccache.cc b/otk/gccache.cc new file mode 100644 index 00000000..2ab37f34 --- /dev/null +++ b/otk/gccache.cc @@ -0,0 +1,188 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- + +#ifdef HAVE_CONFIG_H +# include "../config.h" +#endif // HAVE_CONFIG_H + +extern "C" { +#include +} + +#include "gccache.hh" +#include "basedisplay.hh" +#include "color.hh" +#include "util.hh" + + +BGCCacheContext::~BGCCacheContext(void) { + if (gc) + XFreeGC(display->getXDisplay(), gc); +} + + +void BGCCacheContext::set(const BColor &_color, + const XFontStruct * const _font, + const int _function, const int _subwindow, + int _linewidth) { + XGCValues gcv; + pixel = gcv.foreground = _color.pixel(); + function = gcv.function = _function; + subwindow = gcv.subwindow_mode = _subwindow; + linewidth = gcv.line_width = _linewidth; + gcv.cap_style = CapProjecting; + + unsigned long mask = GCForeground | GCFunction | GCSubwindowMode | + GCLineWidth | GCCapStyle; + + if (_font) { + fontid = gcv.font = _font->fid; + mask |= GCFont; + } else { + fontid = 0; + } + + XChangeGC(display->getXDisplay(), gc, mask, &gcv); +} + + +void BGCCacheContext::set(const XFontStruct * const _font) { + if (! _font) { + fontid = 0; + return; + } + + XGCValues gcv; + fontid = gcv.font = _font->fid; + XChangeGC(display->getXDisplay(), gc, GCFont, &gcv); +} + + +BGCCache::BGCCache(const BaseDisplay * const _display, + unsigned int screen_count) + : display(_display), context_count(128u), + cache_size(16u), cache_buckets(8u * screen_count), + cache_total_size(cache_size * cache_buckets) { + + contexts = new BGCCacheContext*[context_count]; + unsigned int i; + for (i = 0; i < context_count; i++) { + contexts[i] = new BGCCacheContext(display); + } + + cache = new BGCCacheItem*[cache_total_size]; + for (i = 0; i < cache_total_size; ++i) { + cache[i] = new BGCCacheItem; + } +} + + +BGCCache::~BGCCache(void) { + std::for_each(contexts, contexts + context_count, PointerAssassin()); + std::for_each(cache, cache + cache_total_size, PointerAssassin()); + delete [] cache; + delete [] contexts; +} + + +BGCCacheContext *BGCCache::nextContext(unsigned int scr) { + Window hd = display->getScreenInfo(scr)->getRootWindow(); + + BGCCacheContext *c; + + for (unsigned int i = 0; i < context_count; ++i) { + c = contexts[i]; + + if (! c->gc) { + c->gc = XCreateGC(display->getXDisplay(), hd, 0, 0); + c->used = false; + c->screen = scr; + } + if (! c->used && c->screen == scr) + return c; + } + + fprintf(stderr, "BGCCache: context fault!\n"); + abort(); + return (BGCCacheContext*) 0; // not reached +} + + +void BGCCache::release(BGCCacheContext *ctx) { + ctx->used = false; +} + + +BGCCacheItem *BGCCache::find(const BColor &_color, + const XFontStruct * const _font, + int _function, int _subwindow, int _linewidth) { + const unsigned long pixel = _color.pixel(); + const unsigned int screen = _color.screen(); + const int key = _color.red() ^ _color.green() ^ _color.blue(); + int k = (key % cache_size) * cache_buckets; + unsigned int i = 0; // loop variable + BGCCacheItem *c = cache[ k ], *prev = 0; + + /* + this will either loop cache_buckets times then return/abort or + it will stop matching + */ + while (c->ctx && + (c->ctx->pixel != pixel || c->ctx->function != _function || + c->ctx->subwindow != _subwindow || c->ctx->screen != screen || + c->ctx->linewidth != _linewidth)) { + if (i < (cache_buckets - 1)) { + prev = c; + c = cache[ ++k ]; + ++i; + continue; + } + if (c->count == 0 && c->ctx->screen == screen) { + // use this cache item + c->ctx->set(_color, _font, _function, _subwindow, _linewidth); + c->ctx->used = true; + c->count = 1; + c->hits = 1; + return c; + } + // cache fault! + fprintf(stderr, "BGCCache: cache fault, count: %d, screen: %d, item screen: %d\n", c->count, screen, c->ctx->screen); + abort(); + } + + if (c->ctx) { + // reuse existing context + if (_font && _font->fid && _font->fid != c->ctx->fontid) + c->ctx->set(_font); + c->count++; + c->hits++; + if (prev && c->hits > prev->hits) { + cache[ k ] = prev; + cache[ k - 1 ] = c; + } + } else { + c->ctx = nextContext(screen); + c->ctx->set(_color, _font, _function, _subwindow, _linewidth); + c->ctx->used = true; + c->count = 1; + c->hits = 1; + } + + return c; +} + + +void BGCCache::release(BGCCacheItem *_item) { + _item->count--; +} + + +void BGCCache::purge(void) { + for (unsigned int i = 0; i < cache_total_size; ++i) { + BGCCacheItem *d = cache[ i ]; + + if (d->ctx && d->count == 0) { + release(d->ctx); + d->ctx = 0; + } + } +} diff --git a/otk/gccache.hh b/otk/gccache.hh new file mode 100644 index 00000000..499ed8a4 --- /dev/null +++ b/otk/gccache.hh @@ -0,0 +1,119 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- +#ifndef GCCACHE_HH +#define GCCACHE_HH + +extern "C" { +#include +} + +#include "basedisplay.hh" +#include "color.hh" + +class BGCCacheItem; + +class BGCCacheContext { +public: + void set(const BColor &_color, const XFontStruct * const _font, + const int _function, const int _subwindow, const int _linewidth); + void set(const XFontStruct * const _font); + + ~BGCCacheContext(void); + +private: + BGCCacheContext(const BaseDisplay * const _display) + : display(_display), gc(0), pixel(0ul), fontid(0ul), + function(0), subwindow(0), used(false), screen(~(0u)), linewidth(0) {} + + const BaseDisplay *display; + GC gc; + unsigned long pixel; + unsigned long fontid; + int function; + int subwindow; + bool used; + unsigned int screen; + int linewidth; + + BGCCacheContext(const BGCCacheContext &_nocopy); + BGCCacheContext &operator=(const BGCCacheContext &_nocopy); + + friend class BGCCache; + friend class BGCCacheItem; +}; + +class BGCCacheItem { +public: + inline const GC &gc(void) const { return ctx->gc; } + +private: + BGCCacheItem(void) : ctx(0), count(0), hits(0), fault(false) { } + + BGCCacheContext *ctx; + unsigned int count; + unsigned int hits; + bool fault; + + BGCCacheItem(const BGCCacheItem &_nocopy); + BGCCacheItem &operator=(const BGCCacheItem &_nocopy); + + friend class BGCCache; +}; + +class BGCCache { +public: + BGCCache(const BaseDisplay * const _display, unsigned int screen_count); + ~BGCCache(void); + + // cleans up the cache + void purge(void); + + BGCCacheItem *find(const BColor &_color, const XFontStruct * const _font = 0, + int _function = GXcopy, int _subwindow = ClipByChildren, + int _linewidth = 0); + void release(BGCCacheItem *_item); + +private: + BGCCacheContext *nextContext(unsigned int _screen); + void release(BGCCacheContext *ctx); + + // this is closely modelled after the Qt GC cache, but with some of the + // complexity stripped out + const BaseDisplay *display; + + const unsigned int context_count; + const unsigned int cache_size; + const unsigned int cache_buckets; + const unsigned int cache_total_size; + BGCCacheContext **contexts; + BGCCacheItem **cache; +}; + +class BPen { +public: + inline BPen(const BColor &_color, const XFontStruct * const _font = 0, + int _linewidth = 0, int _function = GXcopy, + int _subwindow = ClipByChildren) + : color(_color), font(_font), linewidth(_linewidth), function(_function), + subwindow(_subwindow), cache(_color.display()->gcCache()), item(0) { } + + inline ~BPen(void) { if (item) cache->release(item); } + + inline const GC &gc(void) const { + if (! item) item = cache->find(color, font, function, subwindow, + linewidth); + return item->gc(); + } + +private: + const BColor &color; + const XFontStruct *font; + int linewidth; + int function; + int subwindow; + + mutable BGCCache *cache; + mutable BGCCacheItem *item; +}; + + +#endif // GCCACHE_HH diff --git a/otk/gccache.o b/otk/gccache.o new file mode 100644 index 0000000000000000000000000000000000000000..28af99de7d414269974b64af5eb06e54fd3cfee5 GIT binary patch literal 183688 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

}vG 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 Km)2dOEBPN--0W!p literal 0 HcmV?d00001 diff --git a/otk/image.cc b/otk/image.cc new file mode 100644 index 00000000..21e9d690 --- /dev/null +++ b/otk/image.cc @@ -0,0 +1,1677 @@ +// -*- mode: C++; indent-tabs-mode: nil; -*- + +#ifdef HAVE_CONFIG_H +# include "../config.h" +#endif // HAVE_CONFIG_H + +#ifdef HAVE_STDIO_H +# include +#endif // HAVE_STDIO_H + +#include +using std::max; +using std::min; + +#include "blackbox.hh" +#include "basedisplay.hh" +#include "gccache.hh" +#include "image.hh" +#include "texture.hh" + + +BImage::BImage(BImageControl *c, int w, int h) { + control = c; + + width = (w > 0) ? w : 1; + height = (h > 0) ? h : 1; + + red = new unsigned char[width * height]; + green = new unsigned char[width * height]; + blue = new unsigned char[width * height]; + + xtable = ytable = (unsigned int *) 0; + + cpc = control->getColorsPerChannel(); + cpccpc = cpc * cpc; + + control->getColorTables(&red_table, &green_table, &blue_table, + &red_offset, &green_offset, &blue_offset, + &red_bits, &green_bits, &blue_bits); + + if (control->getVisual()->c_class != TrueColor) + control->getXColorTable(&colors, &ncolors); +} + + +BImage::~BImage(void) { + delete [] red; + delete [] green; + delete [] blue; +} + + +Pixmap BImage::render(const BTexture &texture) { + if (texture.texture() & BTexture::Parent_Relative) + return ParentRelative; + else if (texture.texture() & BTexture::Solid) + return render_solid(texture); + else if (texture.texture() & BTexture::Gradient) + return render_gradient(texture); + return None; +} + + +Pixmap BImage::render_solid(const BTexture &texture) { + Pixmap pixmap = XCreatePixmap(control->getBaseDisplay()->getXDisplay(), + control->getDrawable(), width, + height, control->getDepth()); + if (pixmap == None) { + fprintf(stderr, "BImage::render_solid: error creating pixmap\n"); + return None; + } + + Display *display = control->getBaseDisplay()->getXDisplay(); + + BPen pen(texture.color()); + BPen penlight(texture.lightColor()); + BPen penshadow(texture.shadowColor()); + + XFillRectangle(display, pixmap, pen.gc(), 0, 0, width, height); + + if (texture.texture() & BTexture::Interlaced) { + BPen peninterlace(texture.colorTo()); + for (unsigned int i = 0; i < height; i += 2) + XDrawLine(display, pixmap, peninterlace.gc(), 0, i, width, i); + } + + int left = 0, top = 0, right = width - 1, bottom = height - 1; + + if (texture.texture() & BTexture::Border) { + BPen penborder(texture.borderColor()); + XDrawRectangle(display, pixmap, penborder.gc(), + left, top, right, bottom); + } + + if (texture.texture() & BTexture::Bevel1) { + if (texture.texture() & BTexture::Raised) { + XDrawLine(display, pixmap, penshadow.gc(), + left, bottom, right, bottom); + XDrawLine(display, pixmap, penshadow.gc(), + right, bottom, right, top); + + XDrawLine(display, pixmap, penlight.gc(), + left, top, right, top); + XDrawLine(display, pixmap, penlight.gc(), + left, bottom, left, top); + } else if (texture.texture() & BTexture::Sunken) { + XDrawLine(display, pixmap, penlight.gc(), + left, bottom, right, bottom); + XDrawLine(display, pixmap, penlight.gc(), + right, bottom, right, top); + + XDrawLine(display, pixmap, penshadow.gc(), + left, top, right, top); + XDrawLine(display, pixmap, penshadow.gc(), + left, bottom, left, top); + } + } else if (texture.texture() & BTexture::Bevel2) { + if (texture.texture() & BTexture::Raised) { + XDrawLine(display, pixmap, penshadow.gc(), + left + 1, bottom - 2, right - 2, bottom - 2); + XDrawLine(display, pixmap, penshadow.gc(), + right - 2, bottom - 2, right - 2, top + 1); + + XDrawLine(display, pixmap, penlight.gc(), + left + 1, top + 1, right - 2, top + 1); + XDrawLine(display, pixmap, penlight.gc(), + left + 1, bottom - 2, left + 1, top + 1); + } else if (texture.texture() & BTexture::Sunken) { + XDrawLine(display, pixmap, penlight.gc(), + left + 1, bottom - 2, right - 2, bottom - 2); + XDrawLine(display, pixmap, penlight.gc(), + right - 2, bottom - 2, right - 2, top + 1); + + XDrawLine(display, pixmap, penshadow.gc(), + left + 1, top + 1, right - 2, top + 1); + XDrawLine(display, pixmap, penshadow.gc(), + left + 1, bottom - 2, left + 1, top + 1); + } + } + + return pixmap; +} + + +Pixmap BImage::render_gradient(const BTexture &texture) { + bool inverted = False; + + interlaced = texture.texture() & BTexture::Interlaced; + + if (texture.texture() & BTexture::Sunken) { + from = texture.colorTo(); + to = texture.color(); + + if (! (texture.texture() & BTexture::Invert)) inverted = True; + } else { + from = texture.color(); + to = texture.colorTo(); + + if (texture.texture() & BTexture::Invert) inverted = True; + } + + control->getGradientBuffers(width, height, &xtable, &ytable); + + if (texture.texture() & BTexture::Diagonal) dgradient(); + else if (texture.texture() & BTexture::Elliptic) egradient(); + else if (texture.texture() & BTexture::Horizontal) hgradient(); + else if (texture.texture() & BTexture::Pyramid) pgradient(); + else if (texture.texture() & BTexture::Rectangle) rgradient(); + else if (texture.texture() & BTexture::Vertical) vgradient(); + else if (texture.texture() & BTexture::CrossDiagonal) cdgradient(); + else if (texture.texture() & BTexture::PipeCross) pcgradient(); + + if (texture.texture() & BTexture::Bevel1) bevel1(); + else if (texture.texture() & BTexture::Bevel2) bevel2(); + + if (texture.texture() & BTexture::Border) border(texture); + + if (inverted) invert(); + + return renderPixmap(); + +} + + +static const unsigned char dither4[4][4] = { + {0, 4, 1, 5}, + {6, 2, 7, 3}, + {1, 5, 0, 4}, + {7, 3, 6, 2} +}; + + +/* + * Helper function for TrueColorDither and renderXImage + * + * This handles the proper setting of the image data based on the image depth + * and the machine's byte ordering + */ +static inline +void assignPixelData(unsigned int bit_depth, unsigned char **data, + unsigned long pixel) { + unsigned char *pixel_data = *data; + switch (bit_depth) { + case 8: // 8bpp + *pixel_data++ = pixel; + break; + + case 16: // 16bpp LSB + *pixel_data++ = pixel; + *pixel_data++ = pixel >> 8; + break; + + case 17: // 16bpp MSB + *pixel_data++ = pixel >> 8; + *pixel_data++ = pixel; + break; + + case 24: // 24bpp LSB + *pixel_data++ = pixel; + *pixel_data++ = pixel >> 8; + *pixel_data++ = pixel >> 16; + break; + + case 25: // 24bpp MSB + *pixel_data++ = pixel >> 16; + *pixel_data++ = pixel >> 8; + *pixel_data++ = pixel; + break; + + case 32: // 32bpp LSB + *pixel_data++ = pixel; + *pixel_data++ = pixel >> 8; + *pixel_data++ = pixel >> 16; + *pixel_data++ = pixel >> 24; + break; + + case 33: // 32bpp MSB + *pixel_data++ = pixel >> 24; + *pixel_data++ = pixel >> 16; + *pixel_data++ = pixel >> 8; + *pixel_data++ = pixel; + break; + } + *data = pixel_data; // assign back so we don't lose our place +} + + +// algorithm: ordered dithering... many many thanks to rasterman +// (raster@rasterman.com) for telling me about this... portions of this +// code is based off of his code in Imlib +void BImage::TrueColorDither(unsigned int bit_depth, int bytes_per_line, + unsigned char *pixel_data) { + unsigned int x, y, dithx, dithy, r, g, b, er, eg, eb, offset; + unsigned char *ppixel_data = pixel_data; + unsigned long pixel; + + for (y = 0, offset = 0; y < height; y++) { + dithy = y & 0x3; + + for (x = 0; x < width; x++, offset++) { + dithx = x & 0x3; + r = red[offset]; + g = green[offset]; + b = blue[offset]; + + er = r & (red_bits - 1); + eg = g & (green_bits - 1); + eb = b & (blue_bits - 1); + + r = red_table[r]; + g = green_table[g]; + b = blue_table[b]; + + if ((dither4[dithy][dithx] < er) && (r < red_table[255])) r++; + if ((dither4[dithy][dithx] < eg) && (g < green_table[255])) g++; + if ((dither4[dithy][dithx] < eb) && (b < blue_table[255])) b++; + + pixel = (r << red_offset) | (g << green_offset) | (b << blue_offset); + assignPixelData(bit_depth, &pixel_data, pixel); + } + + pixel_data = (ppixel_data += bytes_per_line); + } +} + +#ifdef ORDEREDPSEUDO +const static unsigned char dither8[8][8] = { + { 0, 32, 8, 40, 2, 34, 10, 42}, + { 48, 16, 56, 24, 50, 18, 58, 26}, + { 12, 44, 4, 36, 14, 46, 6, 38}, + { 60, 28, 52, 20, 62, 30, 54, 22}, + { 3, 35, 11, 43, 1, 33, 9, 41}, + { 51, 19, 59, 27, 49, 17, 57, 25}, + { 15, 47, 7, 39, 13, 45, 5, 37}, + { 63, 31, 55, 23, 61, 29, 53, 21} +}; + +void BImage::OrderedPseudoColorDither(int bytes_per_line, + unsigned char *pixel_data) { + unsigned int x, y, dithx, dithy, r, g, b, er, eg, eb, offset; + unsigned long pixel; + unsigned char *ppixel_data = pixel_data; + + for (y = 0, offset = 0; y < height; y++) { + dithy = y & 7; + + for (x = 0; x < width; x++, offset++) { + dithx = x & 7; + + r = red[offset]; + g = green[offset]; + b = blue[offset]; + + er = r & (red_bits - 1); + eg = g & (green_bits - 1); + eb = b & (blue_bits - 1); + + r = red_table[r]; + g = green_table[g]; + b = blue_table[b]; + + if ((dither8[dithy][dithx] < er) && (r < red_table[255])) r++; + if ((dither8[dithy][dithx] < eg) && (g < green_table[255])) g++; + if ((dither8[dithy][dithx] < eb) && (b < blue_table[255])) b++; + + pixel = (r * cpccpc) + (g * cpc) + b; + *(pixel_data++) = colors[pixel].pixel; + } + + pixel_data = (ppixel_data += bytes_per_line); + } +} +#endif + +void BImage::PseudoColorDither(int bytes_per_line, unsigned char *pixel_data) { + short *terr, + *rerr = new short[width + 2], + *gerr = new short[width + 2], + *berr = new short[width + 2], + *nrerr = new short[width + 2], + *ngerr = new short[width + 2], + *nberr = new short[width + 2]; + + int rr, gg, bb, rer, ger, ber; + int dd = 255 / control->getColorsPerChannel(); + unsigned int x, y, r, g, b, offset; + unsigned long pixel; + unsigned char *ppixel_data = pixel_data; + + for (x = 0; x < width; x++) { + *(rerr + x) = *(red + x); + *(gerr + x) = *(green + x); + *(berr + x) = *(blue + x); + } + + *(rerr + x) = *(gerr + x) = *(berr + x) = 0; + + for (y = 0, offset = 0; y < height; y++) { + if (y < (height - 1)) { + int i = offset + width; + for (x = 0; x < width; x++, i++) { + *(nrerr + x) = *(red + i); + *(ngerr + x) = *(green + i); + *(nberr + x) = *(blue + i); + } + + *(nrerr + x) = *(red + (--i)); + *(ngerr + x) = *(green + i); + *(nberr + x) = *(blue + i); + } + + for (x = 0; x < width; x++) { + rr = rerr[x]; + gg = gerr[x]; + bb = berr[x]; + + if (rr > 255) rr = 255; else if (rr < 0) rr = 0; + if (gg > 255) gg = 255; else if (gg < 0) gg = 0; + if (bb > 255) bb = 255; else if (bb < 0) bb = 0; + + r = red_table[rr]; + g = green_table[gg]; + b = blue_table[bb]; + + rer = rerr[x] - r*dd; + ger = gerr[x] - g*dd; + ber = berr[x] - b*dd; + + pixel = (r * cpccpc) + (g * cpc) + b; + *pixel_data++ = colors[pixel].pixel; + + r = rer >> 1; + g = ger >> 1; + b = ber >> 1; + rerr[x+1] += r; + gerr[x+1] += g; + berr[x+1] += b; + nrerr[x] += r; + ngerr[x] += g; + nberr[x] += b; + } + + offset += width; + + pixel_data = (ppixel_data += bytes_per_line); + + terr = rerr; + rerr = nrerr; + nrerr = terr; + + terr = gerr; + gerr = ngerr; + ngerr = terr; + + terr = berr; + berr = nberr; + nberr = terr; + } + + delete [] rerr; + delete [] gerr; + delete [] berr; + delete [] nrerr; + delete [] ngerr; + delete [] nberr; +} + +XImage *BImage::renderXImage(void) { + XImage *image = + XCreateImage(control->getBaseDisplay()->getXDisplay(), + control->getVisual(), control->getDepth(), ZPixmap, 0, 0, + width, height, 32, 0); + + if (! image) { + fprintf(stderr, "BImage::renderXImage: error creating XImage\n"); + return (XImage *) 0; + } + + // insurance policy + image->data = (char *) 0; + + unsigned char *d = new unsigned char[image->bytes_per_line * (height + 1)]; + + unsigned int o = image->bits_per_pixel + + ((image->byte_order == MSBFirst) ? 1 : 0); + + bool unsupported = False; + + if (control->doDither() && width > 1 && height > 1) { + switch (control->getVisual()->c_class) { + case TrueColor: + TrueColorDither(o, image->bytes_per_line, d); + break; + + case StaticColor: + case PseudoColor: { +#ifdef ORDEREDPSEUDO + OrderedPseudoColorDither(image->bytes_per_line, d); +#else + PseudoColorDither(image->bytes_per_line, d); +#endif + break; + } + + default: + unsupported = True; + } + } else { + unsigned int x, y, r, g, b, offset; + unsigned char *pixel_data = d, *ppixel_data = d; + unsigned long pixel; + + switch (control->getVisual()->c_class) { + case StaticColor: + case PseudoColor: + for (y = 0, offset = 0; y < height; ++y) { + for (x = 0; x < width; ++x, ++offset) { + r = red_table[red[offset]]; + g = green_table[green[offset]]; + b = blue_table[blue[offset]]; + + pixel = (r * cpccpc) + (g * cpc) + b; + *pixel_data++ = colors[pixel].pixel; + } + + pixel_data = (ppixel_data += image->bytes_per_line); + } + + break; + + case TrueColor: + for (y = 0, offset = 0; y < height; y++) { + for (x = 0; x < width; x++, offset++) { + r = red_table[red[offset]]; + g = green_table[green[offset]]; + b = blue_table[blue[offset]]; + + pixel = (r << red_offset) | (g << green_offset) | (b << blue_offset); + assignPixelData(o, &pixel_data, pixel); + } + + pixel_data = (ppixel_data += image->bytes_per_line); + } + + break; + + case StaticGray: + case GrayScale: + for (y = 0, offset = 0; y < height; y++) { + for (x = 0; x < width; x++, offset++) { + r = *(red_table + *(red + offset)); + g = *(green_table + *(green + offset)); + b = *(blue_table + *(blue + offset)); + + g = ((r * 30) + (g * 59) + (b * 11)) / 100; + *pixel_data++ = colors[g].pixel; + } + + pixel_data = (ppixel_data += image->bytes_per_line); + } + + break; + + default: + unsupported = True; + } + } + + if (unsupported) { + fprintf(stderr, "BImage::renderXImage: unsupported visual\n"); + delete [] d; + XDestroyImage(image); + return (XImage *) 0; + } + + image->data = (char *) d; + + return image; +} + + +Pixmap BImage::renderPixmap(void) { + Pixmap pixmap = + XCreatePixmap(control->getBaseDisplay()->getXDisplay(), + control->getDrawable(), width, height, control->getDepth()); + + if (pixmap == None) { + fprintf(stderr, "BImage::renderPixmap: error creating pixmap\n"); + return None; + } + + XImage *image = renderXImage(); + + if (! image) { + XFreePixmap(control->getBaseDisplay()->getXDisplay(), pixmap); + return None; + } + + if (! image->data) { + XDestroyImage(image); + XFreePixmap(control->getBaseDisplay()->getXDisplay(), pixmap); + return None; + } + + XPutImage(control->getBaseDisplay()->getXDisplay(), pixmap, + DefaultGC(control->getBaseDisplay()->getXDisplay(), + control->getScreenInfo()->getScreenNumber()), + image, 0, 0, 0, 0, width, height); + + if (image->data) { + delete [] image->data; + image->data = NULL; + } + + XDestroyImage(image); + + return pixmap; +} + + +void BImage::bevel1(void) { + if (width > 2 && height > 2) { + unsigned char *pr = red, *pg = green, *pb = blue; + + register unsigned char r, g, b, rr ,gg ,bb; + register unsigned int w = width, h = height - 1, wh = w * h; + + while (--w) { + r = *pr; + rr = r + (r >> 1); + if (rr < r) rr = ~0; + g = *pg; + gg = g + (g >> 1); + if (gg < g) gg = ~0; + b = *pb; + bb = b + (b >> 1); + if (bb < b) bb = ~0; + + *pr = rr; + *pg = gg; + *pb = bb; + + r = *(pr + wh); + rr = (r >> 2) + (r >> 1); + if (rr > r) rr = 0; + g = *(pg + wh); + gg = (g >> 2) + (g >> 1); + if (gg > g) gg = 0; + b = *(pb + wh); + bb = (b >> 2) + (b >> 1); + if (bb > b) bb = 0; + + *((pr++) + wh) = rr; + *((pg++) + wh) = gg; + *((pb++) + wh) = bb; + } + + r = *pr; + rr = r + (r >> 1); + if (rr < r) rr = ~0; + g = *pg; + gg = g + (g >> 1); + if (gg < g) gg = ~0; + b = *pb; + bb = b + (b >> 1); + if (bb < b) bb = ~0; + + *pr = rr; + *pg = gg; + *pb = bb; + + r = *(pr + wh); + rr = (r >> 2) + (r >> 1); + if (rr > r) rr = 0; + g = *(pg + wh); + gg = (g >> 2) + (g >> 1); + if (gg > g) gg = 0; + b = *(pb + wh); + bb = (b >> 2) + (b >> 1); + if (bb > b) bb = 0; + + *(pr + wh) = rr; + *(pg + wh) = gg; + *(pb + wh) = bb; + + pr = red + width; + pg = green + width; + pb = blue + width; + + while (--h) { + r = *pr; + rr = r + (r >> 1); + if (rr < r) rr = ~0; + g = *pg; + gg = g + (g >> 1); + if (gg < g) gg = ~0; + b = *pb; + bb = b + (b >> 1); + if (bb < b) bb = ~0; + + *pr = rr; + *pg = gg; + *pb = bb; + + pr += width - 1; + pg += width - 1; + pb += width - 1; + + r = *pr; + rr = (r >> 2) + (r >> 1); + if (rr > r) rr = 0; + g = *pg; + gg = (g >> 2) + (g >> 1); + if (gg > g) gg = 0; + b = *pb; + bb = (b >> 2) + (b >> 1); + if (bb > b) bb = 0; + + *(pr++) = rr; + *(pg++) = gg; + *(pb++) = bb; + } + + r = *pr; + rr = r + (r >> 1); + if (rr < r) rr = ~0; + g = *pg; + gg = g + (g >> 1); + if (gg < g) gg = ~0; + b = *pb; + bb = b + (b >> 1); + if (bb < b) bb = ~0; + + *pr = rr; + *pg = gg; + *pb = bb; + + pr += width - 1; + pg += width - 1; + pb += width - 1; + + r = *pr; + rr = (r >> 2) + (r >> 1); + if (rr > r) rr = 0; + g = *pg; + gg = (g >> 2) + (g >> 1); + if (gg > g) gg = 0; + b = *pb; + bb = (b >> 2) + (b >> 1); + if (bb > b) bb = 0; + + *pr = rr; + *pg = gg; + *pb = bb; + } +} + + +void BImage::bevel2(void) { + if (width > 4 && height > 4) { + unsigned char r, g, b, rr ,gg ,bb, *pr = red + width + 1, + *pg = green + width + 1, *pb = blue + width + 1; + unsigned int w = width - 2, h = height - 1, wh = width * (height - 3); + + while (--w) { + r = *pr; + rr = r + (r >> 1); + if (rr < r) rr = ~0; + g = *pg; + gg = g + (g >> 1); + if (gg < g) gg = ~0; + b = *pb; + bb = b + (b >> 1); + if (bb < b) bb = ~0; + + *pr = rr; + *pg = gg; + *pb = bb; + + r = *(pr + wh); + rr = (r >> 2) + (r >> 1); + if (rr > r) rr = 0; + g = *(pg + wh); + gg = (g >> 2) + (g >> 1); + if (gg > g) gg = 0; + b = *(pb + wh); + bb = (b >> 2) + (b >> 1); + if (bb > b) bb = 0; + + *((pr++) + wh) = rr; + *((pg++) + wh) = gg; + *((pb++) + wh) = bb; + } + + pr = red + width; + pg = green + width; + pb = blue + width; + + while (--h) { + r = *pr; + rr = r + (r >> 1); + if (rr < r) rr = ~0; + g = *pg; + gg = g + (g >> 1); + if (gg < g) gg = ~0; + b = *pb; + bb = b + (b >> 1); + if (bb < b) bb = ~0; + + *(++pr) = rr; + *(++pg) = gg; + *(++pb) = bb; + + pr += width - 3; + pg += width - 3; + pb += width - 3; + + r = *pr; + rr = (r >> 2) + (r >> 1); + if (rr > r) rr = 0; + g = *pg; + gg = (g >> 2) + (g >> 1); + if (gg > g) gg = 0; + b = *pb; + bb = (b >> 2) + (b >> 1); + if (bb > b) bb = 0; + + *(pr++) = rr; + *(pg++) = gg; + *(pb++) = bb; + + pr++; pg++; pb++; + } + } +} + + +void BImage::border(const BTexture &texture) { + if (width < 2 || height < 2) return; + + register unsigned int i; + int r = texture.borderColor().red(), + g = texture.borderColor().green(), + b = texture.borderColor().blue(); + + unsigned char *pr, *pg, *pb; + + // top line + pr = red; + pg = green; + pb = blue; + for (i = 0; i < width; ++i) { + *pr++ = r; + *pg++ = g; + *pb++ = b; + } + + if (height > 2) { + // left and right lines (pr,pg,pb are already lined up) + for (i = 1; i < height - 1; ++i) { + *pr = r; + *pg = g; + *pb = b; + pr += width - 1; + pg += width - 1; + pb += width - 1; + *pr++ = r; + *pg++ = g; + *pb++ = b; + } + } + + // bottom line (pr,pg,pb are already lined up) + for (i = 0; i < width; ++i) { + *pr++ = r; + *pg++ = g; + *pb++ = b; + } +} + + +void BImage::invert(void) { + register unsigned int i, j, wh = (width * height) - 1; + unsigned char tmp; + + for (i = 0, j = wh; j > i; j--, i++) { + tmp = *(red + j); + *(red + j) = *(red + i); + *(red + i) = tmp; + + tmp = *(green + j); + *(green + j) = *(green + i); + *(green + i) = tmp; + + tmp = *(blue + j); + *(blue + j) = *(blue + i); + *(blue + i) = tmp; + } +} + + +void BImage::dgradient(void) { + // diagonal gradient code was written by Mike Cole + // modified for interlacing by Brad Hughes + + float drx, dgx, dbx, dry, dgy, dby, yr = 0.0, yg = 0.0, yb = 0.0, + xr = (float) from.red(), + xg = (float) from.green(), + xb = (float) from.blue(); + unsigned char *pr = red, *pg = green, *pb = blue; + unsigned int w = width * 2, h = height * 2, *xt = xtable, *yt = ytable; + + register unsigned int x, y; + + dry = drx = (float) (to.red() - from.red()); + dgy = dgx = (float) (to.green() - from.green()); + dby = dbx = (float) (to.blue() - from.blue()); + + // Create X table + drx /= w; + dgx /= w; + dbx /= w; + + for (x = 0; x < width; x++) { + *(xt++) = (unsigned char) (xr); + *(xt++) = (unsigned char) (xg); + *(xt++) = (unsigned char) (xb); + + xr += drx; + xg += dgx; + xb += dbx; + } + + // Create Y table + dry /= h; + dgy /= h; + dby /= h; + + for (y = 0; y < height; y++) { + *(yt++) = ((unsigned char) yr); + *(yt++) = ((unsigned char) yg); + *(yt++) = ((unsigned char) yb); + + yr += dry; + yg += dgy; + yb += dby; + } + + // Combine tables to create gradient + + if (! interlaced) { + // normal dgradient + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + *(pr++) = *(xt++) + *(yt); + *(pg++) = *(xt++) + *(yt + 1); + *(pb++) = *(xt++) + *(yt + 2); + } + } + } else { + // faked interlacing effect + unsigned char channel, channel2; + + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + if (y & 1) { + channel = *(xt++) + *(yt); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pr++) = channel2; + + channel = *(xt++) + *(yt + 1); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pg++) = channel2; + + channel = *(xt++) + *(yt + 2); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pb++) = channel2; + } else { + channel = *(xt++) + *(yt); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pr++) = channel2; + + channel = *(xt++) + *(yt + 1); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pg++) = channel2; + + channel = *(xt++) + *(yt + 2); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pb++) = channel2; + } + } + } + } +} + + +void BImage::hgradient(void) { + float drx, dgx, dbx, + xr = (float) from.red(), + xg = (float) from.green(), + xb = (float) from.blue(); + unsigned char *pr = red, *pg = green, *pb = blue; + + register unsigned int x, y; + + drx = (float) (to.red() - from.red()); + dgx = (float) (to.green() - from.green()); + dbx = (float) (to.blue() - from.blue()); + + drx /= width; + dgx /= width; + dbx /= width; + + if (interlaced && height > 2) { + // faked interlacing effect + unsigned char channel, channel2; + + for (x = 0; x < width; x++, pr++, pg++, pb++) { + channel = (unsigned char) xr; + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *pr = channel2; + + channel = (unsigned char) xg; + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *pg = channel2; + + channel = (unsigned char) xb; + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *pb = channel2; + + + channel = (unsigned char) xr; + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pr + width) = channel2; + + channel = (unsigned char) xg; + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pg + width) = channel2; + + channel = (unsigned char) xb; + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pb + width) = channel2; + + xr += drx; + xg += dgx; + xb += dbx; + } + + pr += width; + pg += width; + pb += width; + + int offset; + + for (y = 2; y < height; y++, pr += width, pg += width, pb += width) { + if (y & 1) offset = width; else offset = 0; + + memcpy(pr, (red + offset), width); + memcpy(pg, (green + offset), width); + memcpy(pb, (blue + offset), width); + } + } else { + // normal hgradient + for (x = 0; x < width; x++) { + *(pr++) = (unsigned char) (xr); + *(pg++) = (unsigned char) (xg); + *(pb++) = (unsigned char) (xb); + + xr += drx; + xg += dgx; + xb += dbx; + } + + for (y = 1; y < height; y++, pr += width, pg += width, pb += width) { + memcpy(pr, red, width); + memcpy(pg, green, width); + memcpy(pb, blue, width); + } + } +} + + +void BImage::vgradient(void) { + float dry, dgy, dby, + yr = (float) from.red(), + yg = (float) from.green(), + yb = (float) from.blue(); + unsigned char *pr = red, *pg = green, *pb = blue; + + register unsigned int y; + + dry = (float) (to.red() - from.red()); + dgy = (float) (to.green() - from.green()); + dby = (float) (to.blue() - from.blue()); + + dry /= height; + dgy /= height; + dby /= height; + + if (interlaced) { + // faked interlacing effect + unsigned char channel, channel2; + + for (y = 0; y < height; y++, pr += width, pg += width, pb += width) { + if (y & 1) { + channel = (unsigned char) yr; + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + memset(pr, channel2, width); + + channel = (unsigned char) yg; + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + memset(pg, channel2, width); + + channel = (unsigned char) yb; + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + memset(pb, channel2, width); + } else { + channel = (unsigned char) yr; + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + memset(pr, channel2, width); + + channel = (unsigned char) yg; + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + memset(pg, channel2, width); + + channel = (unsigned char) yb; + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + memset(pb, channel2, width); + } + + yr += dry; + yg += dgy; + yb += dby; + } + } else { + // normal vgradient + for (y = 0; y < height; y++, pr += width, pg += width, pb += width) { + memset(pr, (unsigned char) yr, width); + memset(pg, (unsigned char) yg, width); + memset(pb, (unsigned char) yb, width); + + yr += dry; + yg += dgy; + yb += dby; + } + } +} + + +void BImage::pgradient(void) { + // pyramid gradient - based on original dgradient, written by + // Mosfet (mosfet@kde.org) + // adapted from kde sources for Blackbox by Brad Hughes + + float yr, yg, yb, drx, dgx, dbx, dry, dgy, dby, + xr, xg, xb; + int rsign, gsign, bsign; + unsigned char *pr = red, *pg = green, *pb = blue; + unsigned int tr = to.red(), tg = to.green(), tb = to.blue(), + *xt = xtable, *yt = ytable; + + register unsigned int x, y; + + dry = drx = (float) (to.red() - from.red()); + dgy = dgx = (float) (to.green() - from.green()); + dby = dbx = (float) (to.blue() - from.blue()); + + rsign = (drx < 0) ? -1 : 1; + gsign = (dgx < 0) ? -1 : 1; + bsign = (dbx < 0) ? -1 : 1; + + xr = yr = (drx / 2); + xg = yg = (dgx / 2); + xb = yb = (dbx / 2); + + // Create X table + drx /= width; + dgx /= width; + dbx /= width; + + for (x = 0; x < width; x++) { + *(xt++) = (unsigned char) ((xr < 0) ? -xr : xr); + *(xt++) = (unsigned char) ((xg < 0) ? -xg : xg); + *(xt++) = (unsigned char) ((xb < 0) ? -xb : xb); + + xr -= drx; + xg -= dgx; + xb -= dbx; + } + + // Create Y table + dry /= height; + dgy /= height; + dby /= height; + + for (y = 0; y < height; y++) { + *(yt++) = ((unsigned char) ((yr < 0) ? -yr : yr)); + *(yt++) = ((unsigned char) ((yg < 0) ? -yg : yg)); + *(yt++) = ((unsigned char) ((yb < 0) ? -yb : yb)); + + yr -= dry; + yg -= dgy; + yb -= dby; + } + + // Combine tables to create gradient + + if (! interlaced) { + // normal pgradient + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + *(pr++) = (unsigned char) (tr - (rsign * (*(xt++) + *(yt)))); + *(pg++) = (unsigned char) (tg - (gsign * (*(xt++) + *(yt + 1)))); + *(pb++) = (unsigned char) (tb - (bsign * (*(xt++) + *(yt + 2)))); + } + } + } else { + // faked interlacing effect + unsigned char channel, channel2; + + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + if (y & 1) { + channel = (unsigned char) (tr - (rsign * (*(xt++) + *(yt)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pr++) = channel2; + + channel = (unsigned char) (tg - (gsign * (*(xt++) + *(yt + 1)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pg++) = channel2; + + channel = (unsigned char) (tb - (bsign * (*(xt++) + *(yt + 2)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pb++) = channel2; + } else { + channel = (unsigned char) (tr - (rsign * (*(xt++) + *(yt)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pr++) = channel2; + + channel = (unsigned char) (tg - (gsign * (*(xt++) + *(yt + 1)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pg++) = channel2; + + channel = (unsigned char) (tb - (bsign * (*(xt++) + *(yt + 2)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pb++) = channel2; + } + } + } + } +} + + +void BImage::rgradient(void) { + // rectangle gradient - based on original dgradient, written by + // Mosfet (mosfet@kde.org) + // adapted from kde sources for Blackbox by Brad Hughes + + float drx, dgx, dbx, dry, dgy, dby, xr, xg, xb, yr, yg, yb; + int rsign, gsign, bsign; + unsigned char *pr = red, *pg = green, *pb = blue; + unsigned int tr = to.red(), tg = to.green(), tb = to.blue(), + *xt = xtable, *yt = ytable; + + register unsigned int x, y; + + dry = drx = (float) (to.red() - from.red()); + dgy = dgx = (float) (to.green() - from.green()); + dby = dbx = (float) (to.blue() - from.blue()); + + rsign = (drx < 0) ? -2 : 2; + gsign = (dgx < 0) ? -2 : 2; + bsign = (dbx < 0) ? -2 : 2; + + xr = yr = (drx / 2); + xg = yg = (dgx / 2); + xb = yb = (dbx / 2); + + // Create X table + drx /= width; + dgx /= width; + dbx /= width; + + for (x = 0; x < width; x++) { + *(xt++) = (unsigned char) ((xr < 0) ? -xr : xr); + *(xt++) = (unsigned char) ((xg < 0) ? -xg : xg); + *(xt++) = (unsigned char) ((xb < 0) ? -xb : xb); + + xr -= drx; + xg -= dgx; + xb -= dbx; + } + + // Create Y table + dry /= height; + dgy /= height; + dby /= height; + + for (y = 0; y < height; y++) { + *(yt++) = ((unsigned char) ((yr < 0) ? -yr : yr)); + *(yt++) = ((unsigned char) ((yg < 0) ? -yg : yg)); + *(yt++) = ((unsigned char) ((yb < 0) ? -yb : yb)); + + yr -= dry; + yg -= dgy; + yb -= dby; + } + + // Combine tables to create gradient + + if (! interlaced) { + // normal rgradient + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + *(pr++) = (unsigned char) (tr - (rsign * max(*(xt++), *(yt)))); + *(pg++) = (unsigned char) (tg - (gsign * max(*(xt++), *(yt + 1)))); + *(pb++) = (unsigned char) (tb - (bsign * max(*(xt++), *(yt + 2)))); + } + } + } else { + // faked interlacing effect + unsigned char channel, channel2; + + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + if (y & 1) { + channel = (unsigned char) (tr - (rsign * max(*(xt++), *(yt)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pr++) = channel2; + + channel = (unsigned char) (tg - (gsign * max(*(xt++), *(yt + 1)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pg++) = channel2; + + channel = (unsigned char) (tb - (bsign * max(*(xt++), *(yt + 2)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pb++) = channel2; + } else { + channel = (unsigned char) (tr - (rsign * max(*(xt++), *(yt)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pr++) = channel2; + + channel = (unsigned char) (tg - (gsign * max(*(xt++), *(yt + 1)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pg++) = channel2; + + channel = (unsigned char) (tb - (bsign * max(*(xt++), *(yt + 2)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pb++) = channel2; + } + } + } + } +} + + +void BImage::egradient(void) { + // elliptic gradient - based on original dgradient, written by + // Mosfet (mosfet@kde.org) + // adapted from kde sources for Blackbox by Brad Hughes + + float drx, dgx, dbx, dry, dgy, dby, yr, yg, yb, xr, xg, xb; + int rsign, gsign, bsign; + unsigned char *pr = red, *pg = green, *pb = blue; + unsigned int *xt = xtable, *yt = ytable, + tr = (unsigned long) to.red(), + tg = (unsigned long) to.green(), + tb = (unsigned long) to.blue(); + + register unsigned int x, y; + + dry = drx = (float) (to.red() - from.red()); + dgy = dgx = (float) (to.green() - from.green()); + dby = dbx = (float) (to.blue() - from.blue()); + + rsign = (drx < 0) ? -1 : 1; + gsign = (dgx < 0) ? -1 : 1; + bsign = (dbx < 0) ? -1 : 1; + + xr = yr = (drx / 2); + xg = yg = (dgx / 2); + xb = yb = (dbx / 2); + + // Create X table + drx /= width; + dgx /= width; + dbx /= width; + + for (x = 0; x < width; x++) { + *(xt++) = (unsigned long) (xr * xr); + *(xt++) = (unsigned long) (xg * xg); + *(xt++) = (unsigned long) (xb * xb); + + xr -= drx; + xg -= dgx; + xb -= dbx; + } + + // Create Y table + dry /= height; + dgy /= height; + dby /= height; + + for (y = 0; y < height; y++) { + *(yt++) = (unsigned long) (yr * yr); + *(yt++) = (unsigned long) (yg * yg); + *(yt++) = (unsigned long) (yb * yb); + + yr -= dry; + yg -= dgy; + yb -= dby; + } + + // Combine tables to create gradient + + if (! interlaced) { + // normal egradient + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + *(pr++) = (unsigned char) + (tr - (rsign * control->getSqrt(*(xt++) + *(yt)))); + *(pg++) = (unsigned char) + (tg - (gsign * control->getSqrt(*(xt++) + *(yt + 1)))); + *(pb++) = (unsigned char) + (tb - (bsign * control->getSqrt(*(xt++) + *(yt + 2)))); + } + } + } else { + // faked interlacing effect + unsigned char channel, channel2; + + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + if (y & 1) { + channel = (unsigned char) + (tr - (rsign * control->getSqrt(*(xt++) + *(yt)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pr++) = channel2; + + channel = (unsigned char) + (tg - (gsign * control->getSqrt(*(xt++) + *(yt + 1)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pg++) = channel2; + + channel = (unsigned char) + (tb - (bsign * control->getSqrt(*(xt++) + *(yt + 2)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pb++) = channel2; + } else { + channel = (unsigned char) + (tr - (rsign * control->getSqrt(*(xt++) + *(yt)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pr++) = channel2; + + channel = (unsigned char) + (tg - (gsign * control->getSqrt(*(xt++) + *(yt + 1)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pg++) = channel2; + + channel = (unsigned char) + (tb - (bsign * control->getSqrt(*(xt++) + *(yt + 2)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pb++) = channel2; + } + } + } + } +} + + +void BImage::pcgradient(void) { + // pipe cross gradient - based on original dgradient, written by + // Mosfet (mosfet@kde.org) + // adapted from kde sources for Blackbox by Brad Hughes + + float drx, dgx, dbx, dry, dgy, dby, xr, xg, xb, yr, yg, yb; + int rsign, gsign, bsign; + unsigned char *pr = red, *pg = green, *pb = blue; + unsigned int *xt = xtable, *yt = ytable, + tr = to.red(), + tg = to.green(), + tb = to.blue(); + + register unsigned int x, y; + + dry = drx = (float) (to.red() - from.red()); + dgy = dgx = (float) (to.green() - from.green()); + dby = dbx = (float) (to.blue() - from.blue()); + + rsign = (drx < 0) ? -2 : 2; + gsign = (dgx < 0) ? -2 : 2; + bsign = (dbx < 0) ? -2 : 2; + + xr = yr = (drx / 2); + xg = yg = (dgx / 2); + xb = yb = (dbx / 2); + + // Create X table + drx /= width; + dgx /= width; + dbx /= width; + + for (x = 0; x < width; x++) { + *(xt++) = (unsigned char) ((xr < 0) ? -xr : xr); + *(xt++) = (unsigned char) ((xg < 0) ? -xg : xg); + *(xt++) = (unsigned char) ((xb < 0) ? -xb : xb); + + xr -= drx; + xg -= dgx; + xb -= dbx; + } + + // Create Y table + dry /= height; + dgy /= height; + dby /= height; + + for (y = 0; y < height; y++) { + *(yt++) = ((unsigned char) ((yr < 0) ? -yr : yr)); + *(yt++) = ((unsigned char) ((yg < 0) ? -yg : yg)); + *(yt++) = ((unsigned char) ((yb < 0) ? -yb : yb)); + + yr -= dry; + yg -= dgy; + yb -= dby; + } + + // Combine tables to create gradient + + if (! interlaced) { + // normal pcgradient + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + *(pr++) = (unsigned char) (tr - (rsign * min(*(xt++), *(yt)))); + *(pg++) = (unsigned char) (tg - (gsign * min(*(xt++), *(yt + 1)))); + *(pb++) = (unsigned char) (tb - (bsign * min(*(xt++), *(yt + 2)))); + } + } + } else { + // faked interlacing effect + unsigned char channel, channel2; + + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + if (y & 1) { + channel = (unsigned char) (tr - (rsign * min(*(xt++), *(yt)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pr++) = channel2; + + channel = (unsigned char) (tg - (bsign * min(*(xt++), *(yt + 1)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pg++) = channel2; + + channel = (unsigned char) (tb - (gsign * min(*(xt++), *(yt + 2)))); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pb++) = channel2; + } else { + channel = (unsigned char) (tr - (rsign * min(*(xt++), *(yt)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pr++) = channel2; + + channel = (unsigned char) (tg - (gsign * min(*(xt++), *(yt + 1)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pg++) = channel2; + + channel = (unsigned char) (tb - (bsign * min(*(xt++), *(yt + 2)))); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pb++) = channel2; + } + } + } + } +} + + +void BImage::cdgradient(void) { + // cross diagonal gradient - based on original dgradient, written by + // Mosfet (mosfet@kde.org) + // adapted from kde sources for Blackbox by Brad Hughes + + float drx, dgx, dbx, dry, dgy, dby, yr = 0.0, yg = 0.0, yb = 0.0, + xr = (float) from.red(), + xg = (float) from.green(), + xb = (float) from.blue(); + unsigned char *pr = red, *pg = green, *pb = blue; + unsigned int w = width * 2, h = height * 2, *xt, *yt; + + register unsigned int x, y; + + dry = drx = (float) (to.red() - from.red()); + dgy = dgx = (float) (to.green() - from.green()); + dby = dbx = (float) (to.blue() - from.blue()); + + // Create X table + drx /= w; + dgx /= w; + dbx /= w; + + for (xt = (xtable + (width * 3) - 1), x = 0; x < width; x++) { + *(xt--) = (unsigned char) xb; + *(xt--) = (unsigned char) xg; + *(xt--) = (unsigned char) xr; + + xr += drx; + xg += dgx; + xb += dbx; + } + + // Create Y table + dry /= h; + dgy /= h; + dby /= h; + + for (yt = ytable, y = 0; y < height; y++) { + *(yt++) = (unsigned char) yr; + *(yt++) = (unsigned char) yg; + *(yt++) = (unsigned char) yb; + + yr += dry; + yg += dgy; + yb += dby; + } + + // Combine tables to create gradient + + if (! interlaced) { + // normal cdgradient + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + *(pr++) = *(xt++) + *(yt); + *(pg++) = *(xt++) + *(yt + 1); + *(pb++) = *(xt++) + *(yt + 2); + } + } + } else { + // faked interlacing effect + unsigned char channel, channel2; + + for (yt = ytable, y = 0; y < height; y++, yt += 3) { + for (xt = xtable, x = 0; x < width; x++) { + if (y & 1) { + channel = *(xt++) + *(yt); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pr++) = channel2; + + channel = *(xt++) + *(yt + 1); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pg++) = channel2; + + channel = *(xt++) + *(yt + 2); + channel2 = (channel >> 1) + (channel >> 2); + if (channel2 > channel) channel2 = 0; + *(pb++) = channel2; + } else { + channel = *(xt++) + *(yt); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pr++) = channel2; + + channel = *(xt++) + *(yt + 1); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pg++) = channel2; + + channel = *(xt++) + *(yt + 2); + channel2 = channel + (channel >> 3); + if (channel2 < channel) channel2 = ~0; + *(pb++) = channel2; + } + } + } + } +} diff --git a/otk/image.hh b/otk/image.hh new file mode 100644 index 00000000..85ad287d --- /dev/null +++ b/otk/image.hh @@ -0,0 +1,144 @@ +// -*- mode: C++; indent-tabs-mode: nil; -*- +#ifndef __Image_hh +#define __Image_hh + +extern "C" { +#include +#include +} + +#include + +#include "timer.hh" +#include "basedisplay.hh" +#include "color.hh" + +class BImageControl; +class BTexture; + +class BImage { +private: + BImageControl *control; + bool interlaced; + XColor *colors; + + BColor from, to; + int red_offset, green_offset, blue_offset, red_bits, green_bits, blue_bits, + ncolors, cpc, cpccpc; + unsigned char *red, *green, *blue, *red_table, *green_table, *blue_table; + unsigned int width, height, *xtable, *ytable; + + void TrueColorDither(unsigned int bit_depth, int bytes_per_line, + unsigned char *pixel_data); + void PseudoColorDither(int bytes_per_line, unsigned char *pixel_data); +#ifdef ORDEREDPSEUDO + void OrderedPseudoColorDither(int bytes_per_line, unsigned char *pixel_data); +#endif + + Pixmap renderPixmap(void); + Pixmap render_solid(const BTexture &texture); + Pixmap render_gradient(const BTexture &texture); + + XImage *renderXImage(void); + + void invert(void); + void bevel1(void); + void bevel2(void); + void border(const BTexture &texture); + void dgradient(void); + void egradient(void); + void hgradient(void); + void pgradient(void); + void rgradient(void); + void vgradient(void); + void cdgradient(void); + void pcgradient(void); + + +public: + BImage(BImageControl *c, int w, int h); + ~BImage(void); + + Pixmap render(const BTexture &texture); +}; + + +class BImageControl : public TimeoutHandler { +public: + struct CachedImage { + Pixmap pixmap; + + unsigned int count, width, height; + unsigned long pixel1, pixel2, texture; + }; + + BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn, + bool _dither= False, int _cpc = 4, + unsigned long cache_timeout = 300000l, + unsigned long cmax = 200l); + virtual ~BImageControl(void); + + inline BaseDisplay *getBaseDisplay(void) const { return basedisplay; } + + inline bool doDither(void) { return dither; } + + inline const ScreenInfo *getScreenInfo(void) { return screeninfo; } + + inline Window getDrawable(void) const { return window; } + + inline Visual *getVisual(void) { return screeninfo->getVisual(); } + + inline int getBitsPerPixel(void) const { return bits_per_pixel; } + inline int getDepth(void) const { return screen_depth; } + inline int getColorsPerChannel(void) const + { return colors_per_channel; } + + unsigned long getSqrt(unsigned int x); + + Pixmap renderImage(unsigned int width, unsigned int height, + const BTexture &texture); + + void installRootColormap(void); + void removeImage(Pixmap pixmap); + void getColorTables(unsigned char **rmt, unsigned char **gmt, + unsigned char **bmt, + int *roff, int *goff, int *boff, + int *rbit, int *gbit, int *bbit); + void getXColorTable(XColor **c, int *n); + void getGradientBuffers(unsigned int w, unsigned int h, + unsigned int **xbuf, unsigned int **ybuf); + void setDither(bool d) { dither = d; } + void setColorsPerChannel(int cpc); + + virtual void timeout(void); + +private: + bool dither; + BaseDisplay *basedisplay; + const ScreenInfo *screeninfo; + BTimer *timer; + + Colormap colormap; + + Window window; + XColor *colors; + int colors_per_channel, ncolors, screen_number, screen_depth, + bits_per_pixel, red_offset, green_offset, blue_offset, + red_bits, green_bits, blue_bits; + unsigned char red_color_table[256], green_color_table[256], + blue_color_table[256]; + unsigned int *grad_xbuffer, *grad_ybuffer, grad_buffer_width, + grad_buffer_height; + unsigned long *sqrt_table, cache_max; + + typedef std::list CacheContainer; + CacheContainer cache; + + Pixmap searchCache(const unsigned int width, const unsigned int height, + const unsigned long texture, + const BColor &c1, const BColor &c2); +}; + + +#endif // __Image_hh + diff --git a/otk/image.o b/otk/image.o new file mode 100644 index 0000000000000000000000000000000000000000..5a6753089c4e0043a88bb744a9680819ba820803 GIT binary patch literal 310968 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 +#endif // HAVE_STDIO_H + +#ifdef HAVE_CTYPE_H +# include +#endif // HAVE_CTYPE_H + +#include +} + +#include + +#include "blackbox.hh" +#include "basedisplay.hh" +#include "color.hh" +#include "image.hh" +#include "texture.hh" + +static unsigned long bsqrt(unsigned long x) { + if (x <= 0) return 0; + if (x == 1) return 1; + + unsigned long r = x >> 1; + unsigned long q; + + while (1) { + q = x / r; + if (q >= r) return r; + r = (r + q) >> 1; + } +} + +BImageControl *ctrl = 0; + +BImageControl::BImageControl(BaseDisplay *dpy, const ScreenInfo *scrn, + bool _dither, int _cpc, + unsigned long cache_timeout, + unsigned long cmax) { + if (! ctrl) ctrl = this; + + basedisplay = dpy; + screeninfo = scrn; + setDither(_dither); + setColorsPerChannel(_cpc); + + cache_max = cmax; + if (cache_timeout) { + timer = new BTimer(basedisplay, this); + timer->setTimeout(cache_timeout); + timer->start(); + } else { + timer = (BTimer *) 0; + } + + colors = (XColor *) 0; + ncolors = 0; + + grad_xbuffer = grad_ybuffer = (unsigned int *) 0; + grad_buffer_width = grad_buffer_height = 0; + + sqrt_table = (unsigned long *) 0; + + screen_depth = screeninfo->getDepth(); + window = screeninfo->getRootWindow(); + screen_number = screeninfo->getScreenNumber(); + colormap = screeninfo->getColormap(); + + int count; + XPixmapFormatValues *pmv = XListPixmapFormats(basedisplay->getXDisplay(), + &count); + if (pmv) { + bits_per_pixel = 0; + for (int i = 0; i < count; i++) + if (pmv[i].depth == screen_depth) { + bits_per_pixel = pmv[i].bits_per_pixel; + break; + } + + XFree(pmv); + } + + if (bits_per_pixel == 0) bits_per_pixel = screen_depth; + if (bits_per_pixel >= 24) setDither(False); + + red_offset = green_offset = blue_offset = 0; + + switch (getVisual()->c_class) { + case TrueColor: { + int i; + + // compute color tables + unsigned long red_mask = getVisual()->red_mask, + green_mask = getVisual()->green_mask, + blue_mask = getVisual()->blue_mask; + + while (! (red_mask & 1)) { red_offset++; red_mask >>= 1; } + while (! (green_mask & 1)) { green_offset++; green_mask >>= 1; } + while (! (blue_mask & 1)) { blue_offset++; blue_mask >>= 1; } + + red_bits = 255 / red_mask; + green_bits = 255 / green_mask; + blue_bits = 255 / blue_mask; + + for (i = 0; i < 256; i++) { + red_color_table[i] = i / red_bits; + green_color_table[i] = i / green_bits; + blue_color_table[i] = i / blue_bits; + } + break; + } + + case PseudoColor: + case StaticColor: { + ncolors = colors_per_channel * colors_per_channel * colors_per_channel; + + if (ncolors > (1 << screen_depth)) { + colors_per_channel = (1 << screen_depth) / 3; + ncolors = colors_per_channel * colors_per_channel * colors_per_channel; + } + + if (colors_per_channel < 2 || ncolors > (1 << screen_depth)) { + fprintf(stderr, + "BImageControl::BImageControl: invalid colormap size %d " + "(%d/%d/%d) - reducing", + ncolors, colors_per_channel, colors_per_channel, + colors_per_channel); + + colors_per_channel = (1 << screen_depth) / 3; + } + + colors = new XColor[ncolors]; + if (! colors) { + fprintf(stderr, "BImageControl::BImageControl: error allocating " + "colormap\n"); + exit(1); + } + + int i = 0, ii, p, r, g, b, + +#ifdef ORDEREDPSEUDO + bits = 256 / colors_per_channel; +#else // !ORDEREDPSEUDO + bits = 255 / (colors_per_channel - 1); +#endif // ORDEREDPSEUDO + + red_bits = green_bits = blue_bits = bits; + + for (i = 0; i < 256; i++) + red_color_table[i] = green_color_table[i] = blue_color_table[i] = + i / bits; + + for (r = 0, i = 0; r < colors_per_channel; r++) + for (g = 0; g < colors_per_channel; g++) + for (b = 0; b < colors_per_channel; b++, i++) { + colors[i].red = (r * 0xffff) / (colors_per_channel - 1); + colors[i].green = (g * 0xffff) / (colors_per_channel - 1); + colors[i].blue = (b * 0xffff) / (colors_per_channel - 1);; + colors[i].flags = DoRed|DoGreen|DoBlue; + } + + for (i = 0; i < ncolors; i++) { + if (! XAllocColor(basedisplay->getXDisplay(), colormap, &colors[i])) { + fprintf(stderr, "couldn't alloc color %i %i %i\n", + colors[i].red, colors[i].green, colors[i].blue); + colors[i].flags = 0; + } else { + colors[i].flags = DoRed|DoGreen|DoBlue; + } + } + + XColor icolors[256]; + int incolors = (((1 << screen_depth) > 256) ? 256 : (1 << screen_depth)); + + for (i = 0; i < incolors; i++) + icolors[i].pixel = i; + + XQueryColors(basedisplay->getXDisplay(), colormap, icolors, incolors); + for (i = 0; i < ncolors; i++) { + if (! colors[i].flags) { + unsigned long chk = 0xffffffff, pixel, close = 0; + + p = 2; + while (p--) { + for (ii = 0; ii < incolors; ii++) { + r = (colors[i].red - icolors[i].red) >> 8; + g = (colors[i].green - icolors[i].green) >> 8; + b = (colors[i].blue - icolors[i].blue) >> 8; + pixel = (r * r) + (g * g) + (b * b); + + if (pixel < chk) { + chk = pixel; + close = ii; + } + + colors[i].red = icolors[close].red; + colors[i].green = icolors[close].green; + colors[i].blue = icolors[close].blue; + + if (XAllocColor(basedisplay->getXDisplay(), colormap, + &colors[i])) { + colors[i].flags = DoRed|DoGreen|DoBlue; + break; + } + } + } + } + } + + break; + } + + case GrayScale: + case StaticGray: { + if (getVisual()->c_class == StaticGray) { + ncolors = 1 << screen_depth; + } else { + ncolors = colors_per_channel * colors_per_channel * colors_per_channel; + + if (ncolors > (1 << screen_depth)) { + colors_per_channel = (1 << screen_depth) / 3; + ncolors = + colors_per_channel * colors_per_channel * colors_per_channel; + } + } + + if (colors_per_channel < 2 || ncolors > (1 << screen_depth)) { + fprintf(stderr, + "BImageControl::BImageControl: invalid colormap size %d " + "(%d/%d/%d) - reducing", + ncolors, colors_per_channel, colors_per_channel, + colors_per_channel); + + colors_per_channel = (1 << screen_depth) / 3; + } + + colors = new XColor[ncolors]; + if (! colors) { + fprintf(stderr, + "BImageControl::BImageControl: error allocating colormap\n"); + exit(1); + } + + int i = 0, ii, p, bits = 255 / (colors_per_channel - 1); + red_bits = green_bits = blue_bits = bits; + + for (i = 0; i < 256; i++) + red_color_table[i] = green_color_table[i] = blue_color_table[i] = + i / bits; + + for (i = 0; i < ncolors; i++) { + colors[i].red = (i * 0xffff) / (colors_per_channel - 1); + colors[i].green = (i * 0xffff) / (colors_per_channel - 1); + colors[i].blue = (i * 0xffff) / (colors_per_channel - 1);; + colors[i].flags = DoRed|DoGreen|DoBlue; + + if (! XAllocColor(basedisplay->getXDisplay(), colormap, + &colors[i])) { + fprintf(stderr, "couldn't alloc color %i %i %i\n", + colors[i].red, colors[i].green, colors[i].blue); + colors[i].flags = 0; + } else { + colors[i].flags = DoRed|DoGreen|DoBlue; + } + } + + XColor icolors[256]; + int incolors = (((1 << screen_depth) > 256) ? 256 : + (1 << screen_depth)); + + for (i = 0; i < incolors; i++) + icolors[i].pixel = i; + + XQueryColors(basedisplay->getXDisplay(), colormap, icolors, incolors); + for (i = 0; i < ncolors; i++) { + if (! colors[i].flags) { + unsigned long chk = 0xffffffff, pixel, close = 0; + + p = 2; + while (p--) { + for (ii = 0; ii < incolors; ii++) { + int r = (colors[i].red - icolors[i].red) >> 8; + int g = (colors[i].green - icolors[i].green) >> 8; + int b = (colors[i].blue - icolors[i].blue) >> 8; + pixel = (r * r) + (g * g) + (b * b); + + if (pixel < chk) { + chk = pixel; + close = ii; + } + + colors[i].red = icolors[close].red; + colors[i].green = icolors[close].green; + colors[i].blue = icolors[close].blue; + + if (XAllocColor(basedisplay->getXDisplay(), colormap, + &colors[i])) { + colors[i].flags = DoRed|DoGreen|DoBlue; + break; + } + } + } + } + } + + break; + } + + default: + fprintf(stderr, "BImageControl::BImageControl: unsupported visual %d\n", + getVisual()->c_class); + exit(1); + } +} + + +BImageControl::~BImageControl(void) { + delete [] sqrt_table; + + delete [] grad_xbuffer; + + delete [] grad_ybuffer; + + if (colors) { + unsigned long *pixels = new unsigned long [ncolors]; + + for (int i = 0; i < ncolors; i++) + *(pixels + i) = (*(colors + i)).pixel; + + XFreeColors(basedisplay->getXDisplay(), colormap, pixels, ncolors, 0); + + delete [] colors; + } + + if (! cache.empty()) { + //#ifdef DEBUG + fprintf(stderr, "BImageContol::~BImageControl: pixmap cache - " + "releasing %d pixmaps\n", cache.size()); + //#endif + CacheContainer::iterator it = cache.begin(); + const CacheContainer::iterator end = cache.end(); + for (; it != end; ++it) + XFreePixmap(basedisplay->getXDisplay(), it->pixmap); + } + if (timer) { + timer->stop(); + delete timer; + } +} + + +Pixmap BImageControl::searchCache(const unsigned int width, + const unsigned int height, + const unsigned long texture, + const BColor &c1, const BColor &c2) { + if (cache.empty()) + return None; + + CacheContainer::iterator it = cache.begin(); + const CacheContainer::iterator end = cache.end(); + for (; it != end; ++it) { + CachedImage& tmp = *it; + if (tmp.width == width && tmp.height == height && + tmp.texture == texture && tmp.pixel1 == c1.pixel()) + if (texture & BTexture::Gradient) { + if (tmp.pixel2 == c2.pixel()) { + tmp.count++; + return tmp.pixmap; + } + } else { + tmp.count++; + return tmp.pixmap; + } + } + return None; +} + + +Pixmap BImageControl::renderImage(unsigned int width, unsigned int height, + const BTexture &texture) { + if (texture.texture() & BTexture::Parent_Relative) return ParentRelative; + + Pixmap pixmap = searchCache(width, height, texture.texture(), + texture.color(), texture.colorTo()); + if (pixmap) return pixmap; + + BImage image(this, width, height); + pixmap = image.render(texture); + + if (! pixmap) + return None; + + CachedImage tmp; + + tmp.pixmap = pixmap; + tmp.width = width; + tmp.height = height; + tmp.count = 1; + tmp.texture = texture.texture(); + tmp.pixel1 = texture.color().pixel(); + + if (texture.texture() & BTexture::Gradient) + tmp.pixel2 = texture.colorTo().pixel(); + else + tmp.pixel2 = 0l; + + cache.push_back(tmp); + + if (cache.size() > cache_max) { +#ifdef DEBUG + fprintf(stderr, "BImageControl::renderImage: cache is large, " + "forcing cleanout\n"); +#endif // DEBUG + + timeout(); + } + + return pixmap; +} + + +void BImageControl::removeImage(Pixmap pixmap) { + if (! pixmap) + return; + + CacheContainer::iterator it = cache.begin(); + const CacheContainer::iterator end = cache.end(); + for (; it != end; ++it) { + CachedImage &tmp = *it; + if (tmp.pixmap == pixmap && tmp.count > 0) + tmp.count--; + } + + if (! timer) + timeout(); +} + + +void BImageControl::getColorTables(unsigned char **rmt, unsigned char **gmt, + unsigned char **bmt, + int *roff, int *goff, int *boff, + int *rbit, int *gbit, int *bbit) { + if (rmt) *rmt = red_color_table; + if (gmt) *gmt = green_color_table; + if (bmt) *bmt = blue_color_table; + + if (roff) *roff = red_offset; + if (goff) *goff = green_offset; + if (boff) *boff = blue_offset; + + if (rbit) *rbit = red_bits; + if (gbit) *gbit = green_bits; + if (bbit) *bbit = blue_bits; +} + + +void BImageControl::getXColorTable(XColor **c, int *n) { + if (c) *c = colors; + if (n) *n = ncolors; +} + + +void BImageControl::getGradientBuffers(unsigned int w, + unsigned int h, + unsigned int **xbuf, + unsigned int **ybuf) +{ + if (w > grad_buffer_width) { + if (grad_xbuffer) + delete [] grad_xbuffer; + + grad_buffer_width = w; + + grad_xbuffer = new unsigned int[grad_buffer_width * 3]; + } + + if (h > grad_buffer_height) { + if (grad_ybuffer) + delete [] grad_ybuffer; + + grad_buffer_height = h; + + grad_ybuffer = new unsigned int[grad_buffer_height * 3]; + } + + *xbuf = grad_xbuffer; + *ybuf = grad_ybuffer; +} + + +void BImageControl::installRootColormap(void) { + int ncmap = 0; + Colormap *cmaps = + XListInstalledColormaps(basedisplay->getXDisplay(), window, &ncmap); + + if (cmaps) { + bool install = True; + for (int i = 0; i < ncmap; i++) + if (*(cmaps + i) == colormap) + install = False; + + if (install) + XInstallColormap(basedisplay->getXDisplay(), colormap); + + XFree(cmaps); + } +} + + +void BImageControl::setColorsPerChannel(int cpc) { + if (cpc < 2) cpc = 2; + if (cpc > 6) cpc = 6; + + colors_per_channel = cpc; +} + + +unsigned long BImageControl::getSqrt(unsigned int x) { + if (! sqrt_table) { + // build sqrt table for use with elliptic gradient + + sqrt_table = new unsigned long[(256 * 256 * 2) + 1]; + + for (int i = 0; i < (256 * 256 * 2); i++) + *(sqrt_table + i) = bsqrt(i); + } + + return (*(sqrt_table + x)); +} + + +struct ZeroRefCheck { + inline bool operator()(const BImageControl::CachedImage &image) const { + return (image.count == 0); + } +}; + +struct CacheCleaner { + Display *display; + ZeroRefCheck ref_check; + CacheCleaner(Display *d): display(d) {} + inline void operator()(const BImageControl::CachedImage& image) const { + if (ref_check(image)) + XFreePixmap(display, image.pixmap); + } +}; + + +void BImageControl::timeout(void) { + CacheCleaner cleaner(basedisplay->getXDisplay()); + std::for_each(cache.begin(), cache.end(), cleaner); + cache.remove_if(cleaner.ref_check); +} + diff --git a/otk/texture.cc b/otk/texture.cc new file mode 100644 index 00000000..22454c59 --- /dev/null +++ b/otk/texture.cc @@ -0,0 +1,183 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- + +#ifdef HAVE_CONFIG_H +# include "../config.h" +#endif // HAVE_CONFIG_H + +extern "C" { +#include +#ifdef HAVE_CTYPE_H +#include +#endif +} + +#include + +#include "texture.hh" +#include "basedisplay.hh" +#include "image.hh" +#include "screen.hh" +#include "blackbox.hh" + +using std::string; + + +BTexture::BTexture(const BaseDisplay * const _display, + unsigned int _screen, BImageControl* _ctrl) + : c(_display, _screen), ct(_display, _screen), + lc(_display, _screen), sc(_display, _screen), bc(_display, _screen), t(0), + dpy(_display), ctrl(_ctrl), scrn(_screen) { } + + +BTexture::BTexture(const string &d, const BaseDisplay * const _display, + unsigned int _screen, BImageControl* _ctrl) + : c(_display, _screen), ct(_display, _screen), + lc(_display, _screen), sc(_display, _screen), bc(_display, _screen), t(0), + dpy(_display), ctrl(_ctrl), scrn(_screen) { + setDescription(d); +} + + +void BTexture::setColor(const BColor &cc) { + c = cc; + c.setDisplay(display(), screen()); + + unsigned char r, g, b, rr, gg, bb; + + // calculate the light color + r = c.red(); + g = c.green(); + b = c.blue(); + rr = r + (r >> 1); + gg = g + (g >> 1); + bb = b + (b >> 1); + if (rr < r) rr = ~0; + if (gg < g) gg = ~0; + if (bb < b) bb = ~0; + lc = BColor(rr, gg, bb, display(), screen()); + + // calculate the shadow color + r = c.red(); + g = c.green(); + b = c.blue(); + rr = (r >> 2) + (r >> 1); + gg = (g >> 2) + (g >> 1); + bb = (b >> 2) + (b >> 1); + if (rr > r) rr = 0; + if (gg > g) gg = 0; + if (bb > b) bb = 0; + sc = BColor(rr, gg, bb, display(), screen()); +} + + +void BTexture::setDescription(const string &d) { + descr.erase(); + descr.reserve(d.length()); + + string::const_iterator it = d.begin(), end = d.end(); + for (; it != end; ++it) + descr += tolower(*it); + + if (descr.find("parentrelative") != string::npos) { + setTexture(BTexture::Parent_Relative); + } else { + setTexture(0); + + if (descr.find("gradient") != string::npos) { + addTexture(BTexture::Gradient); + if (descr.find("crossdiagonal") != string::npos) + addTexture(BTexture::CrossDiagonal); + else if (descr.find("rectangle") != string::npos) + addTexture(BTexture::Rectangle); + else if (descr.find("pyramid") != string::npos) + addTexture(BTexture::Pyramid); + else if (descr.find("pipecross") != string::npos) + addTexture(BTexture::PipeCross); + else if (descr.find("elliptic") != string::npos) + addTexture(BTexture::Elliptic); + else if (descr.find("horizontal") != string::npos) + addTexture(BTexture::Horizontal); + else if (descr.find("vertical") != string::npos) + addTexture(BTexture::Vertical); + else + addTexture(BTexture::Diagonal); + } else { + addTexture(BTexture::Solid); + } + + if (descr.find("sunken") != string::npos) + addTexture(BTexture::Sunken); + else if (descr.find("flat") != string::npos) + addTexture(BTexture::Flat); + else + addTexture(BTexture::Raised); + + if (texture() & BTexture::Flat) { + if (descr.find("border") != string::npos) + addTexture(BTexture::Border); + } else { + if (descr.find("bevel2") != string::npos) + addTexture(BTexture::Bevel2); + else + addTexture(BTexture::Bevel1); + } + + if (descr.find("interlaced") != string::npos) + addTexture(BTexture::Interlaced); + } +} + +void BTexture::setDisplay(const BaseDisplay * const _display, + const unsigned int _screen) { + if (_display == display() && _screen == screen()) { + // nothing to do + return; + } + + dpy = _display; + scrn = _screen; + c.setDisplay(_display, _screen); + ct.setDisplay(_display, _screen); + lc.setDisplay(_display, _screen); + sc.setDisplay(_display, _screen); + bc.setDisplay(_display, _screen); +} + + +BTexture& BTexture::operator=(const BTexture &tt) { + c = tt.c; + ct = tt.ct; + lc = tt.lc; + sc = tt.sc; + bc = tt.bc; + descr = tt.descr; + t = tt.t; + dpy = tt.dpy; + scrn = tt.scrn; + ctrl = tt.ctrl; + + return *this; +} + + +Pixmap BTexture::render(const unsigned int width, const unsigned int height, + const Pixmap old) { + assert(display() != 0); + assert(texture() != BTexture::NoTexture); + + if (texture() == (BTexture::Flat | BTexture::Solid)) + return None; + if (texture() == BTexture::Parent_Relative) + return ParentRelative; + + if (screen() == ~(0u)) + scrn = DefaultScreen(display()->getXDisplay()); + + assert(ctrl != 0); + Pixmap ret = ctrl->renderImage(width, height, *this); + + if (old) + ctrl->removeImage(old); + + return ret; +} diff --git a/otk/texture.hh b/otk/texture.hh new file mode 100644 index 00000000..514a0584 --- /dev/null +++ b/otk/texture.hh @@ -0,0 +1,92 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- +#ifndef TEXTURE_HH +#define TEXTURE_HH + +#include "color.hh" +#include "util.hh" +class BImageControl; + +#include + +class BTexture { +public: + enum Type { + // No texture + NoTexture = (0), + // bevel options + Flat = (1l<<0), + Sunken = (1l<<1), + Raised = (1l<<2), + // textures + Solid = (1l<<3), + Gradient = (1l<<4), + // gradients + Horizontal = (1l<<5), + Vertical = (1l<<6), + Diagonal = (1l<<7), + CrossDiagonal = (1l<<8), + Rectangle = (1l<<9), + Pyramid = (1l<<10), + PipeCross = (1l<<11), + Elliptic = (1l<<12), + // bevel types + Bevel1 = (1l<<13), + Bevel2 = (1l<<14), + // flat border + Border = (1l<<15), + // inverted image + Invert = (1l<<16), + // parent relative image + Parent_Relative = (1l<<17), + // fake interlaced image + Interlaced = (1l<<18) + }; + + BTexture(const BaseDisplay * const _display = 0, + unsigned int _screen = ~(0u), BImageControl* _ctrl = 0); + BTexture(const std::string &_description, + const BaseDisplay * const _display = 0, + unsigned int _screen = ~(0u), BImageControl* _ctrl = 0); + + void setColor(const BColor &_color); + void setColorTo(const BColor &_colorTo) { ct = _colorTo; } + void setBorderColor(const BColor &_borderColor) { bc = _borderColor; } + + const BColor &color(void) const { return c; } + const BColor &colorTo(void) const { return ct; } + const BColor &lightColor(void) const { return lc; } + const BColor &shadowColor(void) const { return sc; } + const BColor &borderColor(void) const { return bc; } + + unsigned long texture(void) const { return t; } + void setTexture(const unsigned long _texture) { t = _texture; } + void addTexture(const unsigned long _texture) { t |= _texture; } + + BTexture &operator=(const BTexture &tt); + inline bool operator==(const BTexture &tt) + { return (c == tt.c && ct == tt.ct && lc == tt.lc && + sc == tt.sc && t == tt.t); } + inline bool operator!=(const BTexture &tt) + { return (! operator==(tt)); } + + const BaseDisplay *display(void) const { return dpy; } + unsigned int screen(void) const { return scrn; } + void setDisplay(const BaseDisplay * const _display, + const unsigned int _screen); + void setImageControl(BImageControl* _ctrl) { ctrl = _ctrl; } + const std::string &description(void) const { return descr; } + void setDescription(const std::string &d); + + Pixmap render(const unsigned int width, const unsigned int height, + const Pixmap old = 0); + +private: + BColor c, ct, lc, sc, bc; + std::string descr; + unsigned long t; + const BaseDisplay *dpy; + BImageControl *ctrl; + unsigned int scrn; +}; + +#endif // TEXTURE_HH -- 2.45.2