|
fltk 1.3.0rc3
About: FLTK (Fast Light Tool Kit) is a cross-platform C++ GUI toolkit for UNIX/Linux (X11), Microsoft Windows, and MacOS X. Release candidate.
SfR Fresh Dox: fltk-1.3.0rc3-source.tar.gz ("inofficial" and yet experimental doxygen-generated source code documentation) ![]() |
00001 // 00002 // "$Id: fl_symbols.cxx 7903 2010-11-28 21:06:39Z matt $" 00003 // 00004 // Symbol drawing code for the Fast Light Tool Kit (FLTK). 00005 // 00006 // Copyright 1998-2010 by Bill Spitzak and others. 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of the GNU Library General Public 00010 // License as published by the Free Software Foundation; either 00011 // version 2 of the License, or (at your option) any later version. 00012 // 00013 // This library is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 // Library General Public License for more details. 00017 // 00018 // You should have received a copy of the GNU Library General Public 00019 // License along with this library; if not, write to the Free Software 00020 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00021 // USA. 00022 // 00023 // Please report all bugs and problems on the following page: 00024 // 00025 // http://www.fltk.org/str.php 00026 // 00027 00028 // These are small graphics drawn by the normal label-drawing 00029 // code when the string starts with an '@' sign. 00030 00031 // Adapted from original code written by: 00032 00033 // Written by Mark Overmars 00034 // Version 2.1 a 00035 // Date: Oct 2, 1992 00036 00037 #include <FL/Fl.H> 00038 #include <FL/fl_draw.H> 00039 #include <FL/math.h> 00040 #include "flstring.h" 00041 00042 typedef struct { 00043 const char *name; 00044 void (*drawit)(Fl_Color); 00045 char scalable; 00046 char notempty; 00047 } SYMBOL; 00048 00049 #define MAXSYMBOL 211 00050 /* Maximal number of symbols in table. Only half of them are 00051 used. Should be prime. */ 00052 00053 static SYMBOL symbols[MAXSYMBOL]; /* The symbols */ 00054 static int symbnumb = -1; /* Their number */ 00055 00056 static int find(const char *name) { 00057 // returns hash entry if it exists, or first empty slot: 00058 int pos = name[0] ? ( 00059 name[1] ? ( 00060 name[2] ? 71*name[0]+31*name[1]+name[2] : 31*name[0]+name[1] 00061 ) : 00062 name[0] 00063 ) : 0; 00064 pos %= MAXSYMBOL; 00065 int hh2 = name[0] ? ( 00066 (name[1]) ? 51*name[0]+3*name[1] : 3*name[0] 00067 ) : 1; 00068 hh2 %= MAXSYMBOL; if (!hh2) hh2 = 1; 00069 for (;;) { 00070 if (!symbols[pos].notempty) return pos; 00071 if (!strcmp(symbols[pos].name,name)) return pos; 00072 pos = (pos + hh2) % MAXSYMBOL; 00073 } 00074 } 00075 00076 static void fl_init_symbols(void); 00077 00078 /**************** The routines seen by the user *************************/ 00079 00087 int fl_add_symbol(const char *name, void (*drawit)(Fl_Color), int scalable) 00088 { 00089 fl_init_symbols(); 00090 int pos; 00091 if (symbnumb > MAXSYMBOL / 2) return 0; // table is full 00092 pos = find(name); 00093 symbols[pos].name = name; 00094 symbols[pos].drawit = drawit; 00095 symbols[pos].notempty = 1; 00096 symbols[pos].scalable = scalable; 00097 symbnumb++; 00098 return 1; 00099 } 00100 00101 int fl_return_arrow(int x,int y,int w,int h); 00102 00111 // provided for back compatibility: 00112 int fl_draw_symbol(const char *label,int x,int y,int w,int h,Fl_Color col) { 00113 const char *p = label; 00114 if (*p++ != '@') return 0; 00115 fl_init_symbols(); 00116 int equalscale = 0; 00117 if (*p == '#') {equalscale = 1; p++;} 00118 if (*p == '-' && p[1]>='1' && p[1]<='9') { 00119 int n = p[1]-'0'; 00120 x += n; y += n; w -= 2*n; h -= 2*n; 00121 p += 2; 00122 } else if (*p == '+' && p[1]>='1' && p[1]<='9') { 00123 int n = p[1]-'0'; 00124 x -= n; y -= n; w += 2*n; h += 2*n; 00125 p += 2; 00126 } 00127 if (w < 10) {x -= (10-w)/2; w = 10;} 00128 if (h < 10) {y -= (10-h)/2; h = 10;} 00129 w = (w-1)|1; h = (h-1)|1; 00130 char flip_x = 0, flip_y = 0; 00131 if (*p=='$') { 00132 flip_x = 1; 00133 p++; 00134 } 00135 if (*p=='%') { 00136 flip_y = 1; 00137 p++; 00138 } 00139 int rotangle; 00140 switch (*p++) { 00141 case '0': 00142 rotangle = 1000*(p[1]-'0') + 100*(p[2]-'0') + 10*(p[3]-'0'); 00143 p += 4; 00144 break; 00145 case '1': rotangle = 2250; break; 00146 case '2': rotangle = 2700; break; 00147 case '3': rotangle = 3150; break; 00148 case '4': rotangle = 1800; break; 00149 case '5': 00150 case '6': rotangle = 0; break; 00151 case '7': rotangle = 1350; break; 00152 case '8': rotangle = 900; break; 00153 case '9': rotangle = 450; break; 00154 default: rotangle = 0; p--; break; 00155 } 00156 int pos = find(p); 00157 if (!symbols[pos].notempty) return 0; 00158 if (symbols[pos].scalable == 3) { // kludge to detect return arrow 00159 fl_return_arrow(x,y,w,h); 00160 return 1; 00161 } 00162 fl_push_matrix(); 00163 fl_translate(x+w/2,y+h/2); 00164 if (symbols[pos].scalable) { 00165 if (equalscale) {if (w<h) h = w; else w = h;} 00166 fl_scale(0.5*w, 0.5*h); 00167 fl_rotate(rotangle/10.0); 00168 if (flip_x) fl_scale(-1.0, 1.0); 00169 if (flip_y) fl_scale(1.0, -1.0); 00170 } 00171 (symbols[pos].drawit)(col); 00172 fl_pop_matrix(); 00173 return 1; 00174 } 00175 00176 /******************** THE DEFAULT SYMBOLS ****************************/ 00177 00178 /* Some help stuff */ 00179 00180 #define BP fl_begin_polygon() 00181 #define EP fl_end_polygon() 00182 #define BCP fl_begin_complex_polygon() 00183 #define ECP fl_end_complex_polygon() 00184 #define BL fl_begin_line() 00185 #define EL fl_end_line() 00186 #define BC fl_begin_loop() 00187 #define EC fl_end_loop() 00188 #define vv(x,y) fl_vertex(x,y) 00189 00190 //for the outline color 00191 static void set_outline_color(Fl_Color c) { 00192 fl_color(fl_darker(c)); 00193 } 00194 00195 static void rectangle(double x,double y,double x2,double y2,Fl_Color col) { 00196 fl_color(col); 00197 BP; vv(x,y); vv(x2,y); vv(x2,y2); vv(x,y2); EP; 00198 set_outline_color(col); 00199 BC; vv(x,y); vv(x2,y); vv(x2,y2); vv(x,y2); EC; 00200 } 00201 00202 /* The drawing routines */ 00203 00204 static void draw_fltk(Fl_Color col) 00205 { 00206 fl_color(col); 00207 // F fill 00208 BCP; vv(-2.0, -0.5); vv(-1.0, -0.5); vv(-1.0, -0.3); vv(-1.8, -0.3); 00209 vv(-1.8, -0.1); vv(-1.2, -0.1); vv(-1.2, 0.1); vv(-1.8, 0.1); 00210 vv(-1.8, 0.5); vv(-2.0, 0.5); ECP; 00211 // L fill 00212 BCP; vv(-1.0, -0.5); vv(-0.8, -0.5); vv(-0.8, 0.3); vv(0.0, 0.3); 00213 vv(0.0, 0.5); vv(-1.0, 0.5); ECP; 00214 // T outline 00215 BCP; vv(-0.1, -0.5); vv(1.1, -0.5); vv(1.1, -0.3); vv(0.6, -0.3); 00216 vv(0.6, 0.5); vv(0.4, 0.5); vv(0.4, -0.3); vv(-0.1, -0.3); ECP; 00217 // K outline 00218 BCP; vv(1.1, -0.5); vv(1.3, -0.5); vv(1.3, -0.15); vv(1.70, -0.5); 00219 vv(2.0, -0.5); vv(1.43, 0.0); vv(2.0, 0.5); vv(1.70, 0.5); 00220 vv(1.3, 0.15); vv(1.3, 0.5); vv(1.1, 0.5); ECP; 00221 set_outline_color(col); 00222 // F outline 00223 BC; vv(-2.0, -0.5); vv(-1.0, -0.5); vv(-1.0, -0.3); vv(-1.8, -0.3); 00224 vv(-1.8, -0.1); vv(-1.2, -0.1); vv(-1.2, 0.1); vv(-1.8, 0.1); 00225 vv(-1.8, 0.5); vv(-2.0, 0.5); EC; 00226 // L outline 00227 BC; vv(-1.0, -0.5); vv(-0.8, -0.5); vv(-0.8, 0.3); vv(0.0, 0.3); 00228 vv(0.0, 0.5); vv(-1.0, 0.5); EC; 00229 // T outline 00230 BC; vv(-0.1, -0.5); vv(1.1, -0.5); vv(1.1, -0.3); vv(0.6, -0.3); 00231 vv(0.6, 0.5); vv(0.4, 0.5); vv(0.4, -0.3); vv(-0.1, -0.3); EC; 00232 // K outline 00233 BC; vv(1.1, -0.5); vv(1.3, -0.5); vv(1.3, -0.15); vv(1.70, -0.5); 00234 vv(2.0, -0.5); vv(1.43, 0.0); vv(2.0, 0.5); vv(1.70, 0.5); 00235 vv(1.3, 0.15); vv(1.3, 0.5); vv(1.1, 0.5); EC; 00236 } 00237 00238 static void draw_search(Fl_Color col) 00239 { 00240 fl_color(col); 00241 BP; vv(-.4, .13); vv(-1.0, .73); vv(-.73, 1.0); vv(-.13, .4); EP; 00242 set_outline_color(col); 00243 fl_line_style(FL_SOLID, 3, 0); 00244 BC; fl_circle(.2, -.2, .6); EC; 00245 fl_line_style(FL_SOLID, 1, 0); 00246 BC; vv(-.4, .13); vv(-1.0, .73); vv(-.73, 1.0); vv(-.13, .4); EC; 00247 } 00248 00249 static void draw_arrow1(Fl_Color col) 00250 { 00251 fl_color(col); 00252 BP; vv(-0.8,-0.4); vv(-0.8,0.4); vv(0.0,0.4); vv(0.0,-0.4); EP; 00253 BP; vv(0.0,0.8); vv(0.8,0.0); vv(0.0,-0.8); vv(0.0,-0.4); vv(0.0,0.4); EP; 00254 set_outline_color(col); 00255 BC; vv(-0.8,-0.4); vv(-0.8,0.4); vv(0.0,0.4); vv(0.0,0.8); vv(0.8,0.0); 00256 vv(0.0,-0.8); vv(0.0,-0.4); EC; 00257 } 00258 00259 static void draw_arrow1bar(Fl_Color col) 00260 { 00261 draw_arrow1(col); 00262 rectangle(.6,-.8,.9,.8,col); 00263 } 00264 00265 static void draw_arrow2(Fl_Color col) 00266 { 00267 fl_color(col); 00268 BP; vv(-0.3,0.8); vv(0.50,0.0); vv(-0.3,-0.8); EP; 00269 set_outline_color(col); 00270 BC; vv(-0.3,0.8); vv(0.50,0.0); vv(-0.3,-0.8); EC; 00271 } 00272 00273 static void draw_arrow3(Fl_Color col) 00274 { 00275 fl_color(col); 00276 BP; vv(0.1,0.8); vv(0.9,0.0); vv(0.1,-0.8); EP; 00277 BP; vv(-0.7,0.8); vv(0.1,0.0); vv(-0.7,-0.8); EP; 00278 set_outline_color(col); 00279 BC; vv(0.1,0.8); vv(0.9,0.0); vv(0.1,-0.8); EC; 00280 BC; vv(-0.7,0.8); vv(0.1,0.0); vv(-0.7,-0.8); EC; 00281 } 00282 00283 static void draw_arrowbar(Fl_Color col) 00284 { 00285 fl_color(col); 00286 BP; vv(0.2,0.8); vv(0.6,0.8); vv(0.6,-0.8); vv(0.2,-0.8); EP; 00287 BP; vv(-0.6,0.8); vv(0.2,0.0); vv(-0.6,-0.8); EP; 00288 set_outline_color(col); 00289 BC; vv(0.2,0.8); vv(0.6,0.8); vv(0.6,-0.8); vv(0.2,-0.8); EC; 00290 BC; vv(-0.6,0.8); vv(0.2,0.0); vv(-0.6,-0.8); EC; 00291 } 00292 00293 static void draw_arrowbox(Fl_Color col) 00294 { 00295 fl_color(col); 00296 BP; vv(-0.6,0.8); vv(0.2,0.0); vv(-0.6,-0.8); EP; 00297 BC; vv(0.2,0.8); vv(0.6,0.8); vv(0.6,-0.8); vv(0.2,-0.8); EC; 00298 set_outline_color(col); 00299 BC; vv(0.2,0.8); vv(0.6,0.8); vv(0.6,-0.8); vv(0.2,-0.8); EC; 00300 BC; vv(-0.6,0.8); vv(0.2,0.0); vv(-0.6,-0.8); EC; 00301 } 00302 00303 static void draw_bararrow(Fl_Color col) 00304 { 00305 fl_color(col); 00306 BP; vv(0.1,0.8); vv(0.9,0.0); vv(0.1,-0.8); EP; 00307 BP; vv(-0.5,0.8); vv(-0.1,0.8); vv(-0.1,-0.8); vv(-0.5,-0.8); EP; 00308 set_outline_color(col); 00309 BC; vv(0.1,0.8); vv(0.9,0.0); vv(0.1,-0.8); EC; 00310 BC; vv(-0.5,0.8); vv(-0.1,0.8); vv(-0.1,-0.8); vv(-0.5,-0.8); EC; 00311 } 00312 00313 static void draw_doublebar(Fl_Color col) { 00314 rectangle(-0.6,-0.8,-.1,.8,col); 00315 rectangle(.1,-0.8,.6,.8,col); 00316 } 00317 00318 static void draw_arrow01(Fl_Color col) 00319 { fl_rotate(180); draw_arrow1(col); } 00320 00321 static void draw_arrow02(Fl_Color col) 00322 { fl_rotate(180); draw_arrow2(col); } 00323 00324 static void draw_arrow03(Fl_Color col) 00325 { fl_rotate(180); draw_arrow3(col); } 00326 00327 static void draw_0arrowbar(Fl_Color col) 00328 { fl_rotate(180); draw_arrowbar(col); } 00329 00330 static void draw_0arrowbox(Fl_Color col) 00331 { fl_rotate(180); draw_arrowbox(col); } 00332 00333 static void draw_0bararrow(Fl_Color col) 00334 { fl_rotate(180); draw_bararrow(col); } 00335 00336 static void draw_doublearrow(Fl_Color col) 00337 { 00338 fl_color(col); 00339 BP; vv(-0.35,-0.4); vv(-0.35,0.4); vv(0.35,0.4); vv(0.35,-0.4); EP; 00340 BP; vv(0.15,0.8); vv(0.95,0.0); vv(0.15,-0.8); EP; 00341 BP; vv(-0.15,0.8); vv(-0.95,0.0); vv(-0.15,-0.8); EP; 00342 set_outline_color(col); 00343 BC; vv(-0.15,0.4); vv(0.15,0.4); vv(0.15,0.8); vv(0.95,0.0); 00344 vv(0.15,-0.8); vv(0.15,-0.4); vv(-0.15,-0.4); vv(-0.15,-0.8); 00345 vv(-0.95,0.0); vv(-0.15,0.8); EC; 00346 } 00347 00348 static void draw_arrow(Fl_Color col) 00349 { 00350 fl_color(col); 00351 BP; vv(0.65,0.1); vv(1.0,0.0); vv(0.65,-0.1); EP; 00352 BL; vv(-1.0,0.0); vv(0.65,0.0); EL; 00353 set_outline_color(col); 00354 BL; vv(-1.0,0.0); vv(0.65,0.0); EL; 00355 BC; vv(0.65,0.1); vv(1.0,0.0); vv(0.65,-0.1); EC; 00356 } 00357 00358 static void draw_square(Fl_Color col) 00359 { rectangle(-1,-1,1,1,col); } 00360 00361 static void draw_circle(Fl_Color col) { 00362 fl_color(col); BP; fl_circle(0,0,1); EP; 00363 set_outline_color(col); 00364 BC; fl_circle(0,0,1); EC; 00365 } 00366 00367 static void draw_line(Fl_Color col) 00368 { fl_color(col); BL; vv(-1.0,0.0); vv(1.0,0.0); EL; } 00369 00370 static void draw_plus(Fl_Color col) 00371 { 00372 fl_color(col); 00373 BP; vv(-0.9,-0.15); vv(-0.9,0.15); vv(0.9,0.15); vv(0.9,-0.15); EP; 00374 BP; vv(-0.15,-0.9); vv(-0.15,0.9); vv(0.15,0.9); vv(0.15,-0.9); EP; 00375 set_outline_color(col); 00376 BC; 00377 vv(-0.9,-0.15); vv(-0.9,0.15); vv(-0.15,0.15); vv(-0.15,0.9); 00378 vv(0.15,0.9); vv(0.15,0.15); vv(0.9,0.15); vv(0.9,-0.15); 00379 vv(0.15,-0.15); vv(0.15,-0.9); vv(-0.15,-0.9); vv(-0.15,-0.15); 00380 EC; 00381 } 00382 00383 static void draw_uparrow(Fl_Color) { 00384 fl_color(FL_LIGHT3); 00385 BL; vv(-.8,.8); vv(-.8,-.8); vv(.8,0); EL; 00386 fl_color(FL_DARK3); 00387 BL; vv(-.8,.8); vv(.8, 0); EL; 00388 } 00389 00390 static void draw_downarrow(Fl_Color) { 00391 fl_color(FL_DARK3); 00392 BL; vv(-.8,.8); vv(-.8,-.8); vv(.8,0); EL; 00393 fl_color(FL_LIGHT3); 00394 BL; vv(-.8,.8); vv(.8, 0); EL; 00395 } 00396 00397 static void draw_menu(Fl_Color col) 00398 { 00399 rectangle(-0.65, 0.85, 0.65, -0.25, col); 00400 rectangle(-0.65, -0.6, 0.65, -1.0, col); 00401 } 00402 00403 // Standard UI icons... 00404 static void draw_filenew(Fl_Color c) { 00405 fl_color(c); 00406 BCP; 00407 vv(-0.7, -1.0); 00408 vv(0.1, -1.0); 00409 vv(0.1, -0.4); 00410 vv(0.7, -0.4); 00411 vv(0.7, 1.0); 00412 vv(-0.7, 1.0); 00413 ECP; 00414 00415 fl_color(fl_lighter(c)); 00416 BP; 00417 vv(0.1, -1.0); 00418 vv(0.1, -0.4); 00419 vv(0.7, -0.4); 00420 EP; 00421 00422 fl_color(fl_darker(c)); 00423 BC; 00424 vv(-0.7, -1.0); 00425 vv(0.1, -1.0); 00426 vv(0.1, -0.4); 00427 vv(0.7, -0.4); 00428 vv(0.7, 1.0); 00429 vv(-0.7, 1.0); 00430 EC; 00431 00432 BL; 00433 vv(0.1, -1.0); 00434 vv(0.7, -0.4); 00435 EL; 00436 } 00437 00438 static void draw_fileopen(Fl_Color c) { 00439 fl_color(c); 00440 BP; 00441 vv(-1.0, -0.7); 00442 vv(-0.9, -0.8); 00443 vv(-0.4, -0.8); 00444 vv(-0.3, -0.7); 00445 vv(0.6, -0.7); 00446 vv(0.6, 0.7); 00447 vv(-1.0, 0.7); 00448 EP; 00449 00450 fl_color(fl_darker(c)); 00451 BC; 00452 vv(-1.0, -0.7); 00453 vv(-0.9, -0.8); 00454 vv(-0.4, -0.8); 00455 vv(-0.3, -0.7); 00456 vv(0.6, -0.7); 00457 vv(0.6, 0.7); 00458 vv(-1.0, 0.7); 00459 EC; 00460 00461 fl_color(fl_lighter(c)); 00462 BP; 00463 vv(-1.0, 0.7); 00464 vv(-0.6, -0.3); 00465 vv(1.0, -0.3); 00466 vv(0.6, 0.7); 00467 EP; 00468 00469 fl_color(fl_darker(c)); 00470 BC; 00471 vv(-1.0, 0.7); 00472 vv(-0.6, -0.3); 00473 vv(1.0, -0.3); 00474 vv(0.6, 0.7); 00475 EC; 00476 } 00477 00478 static void draw_filesave(Fl_Color c) { 00479 fl_color(c); 00480 BP; 00481 vv(-0.9, -1.0); 00482 vv(0.9, -1.0); 00483 vv(1.0, -0.9); 00484 vv(1.0, 0.9); 00485 vv(0.9, 1.0); 00486 vv(-0.9, 1.0); 00487 vv(-1.0, 0.9); 00488 vv(-1.0, -0.9); 00489 EP; 00490 00491 fl_color(fl_lighter(c)); 00492 BP; 00493 vv(-0.7, -1.0); 00494 vv(0.7, -1.0); 00495 vv(0.7, -0.4); 00496 vv(-0.7, -0.4); 00497 EP; 00498 00499 BP; 00500 vv(-0.7, 0.0); 00501 vv(0.7, 0.0); 00502 vv(0.7, 1.0); 00503 vv(-0.7, 1.0); 00504 EP; 00505 00506 fl_color(c); 00507 BP; 00508 vv(-0.5, -0.9); 00509 vv(-0.3, -0.9); 00510 vv(-0.3, -0.5); 00511 vv(-0.5, -0.5); 00512 EP; 00513 00514 fl_color(fl_darker(c)); 00515 BC; 00516 vv(-0.9, -1.0); 00517 vv(0.9, -1.0); 00518 vv(1.0, -0.9); 00519 vv(1.0, 0.9); 00520 vv(0.9, 1.0); 00521 vv(-0.9, 1.0); 00522 vv(-1.0, 0.9); 00523 vv(-1.0, -0.9); 00524 EC; 00525 } 00526 00527 static void draw_filesaveas(Fl_Color c) { 00528 draw_filesave(c); 00529 00530 fl_color(fl_color_average(c, FL_WHITE, 0.25f)); 00531 BP; 00532 vv(0.6, -0.8); 00533 vv(1.0, -0.4); 00534 vv(0.0, 0.6); 00535 vv(-0.4, 0.6); 00536 vv(-0.4, 0.2); 00537 EP; 00538 00539 fl_color(fl_darker(c)); 00540 BC; 00541 vv(0.6, -0.8); 00542 vv(1.0, -0.4); 00543 vv(0.0, 0.6); 00544 vv(-0.4, 0.6); 00545 vv(-0.4, 0.2); 00546 EC; 00547 00548 BP; 00549 vv(-0.1, 0.6); 00550 vv(-0.4, 0.6); 00551 vv(-0.4, 0.3); 00552 EP; 00553 } 00554 00555 static void draw_fileprint(Fl_Color c) { 00556 fl_color(c); 00557 BP; 00558 vv(-0.8, 0.0); 00559 vv(0.8, 0.0); 00560 vv(1.0, 0.2); 00561 vv(1.0, 1.0); 00562 vv(-1.0, 1.0); 00563 vv(-1.0, 0.2); 00564 EP; 00565 00566 fl_color(fl_color_average(c, FL_WHITE, 0.25f)); 00567 BP; 00568 vv(-0.6, 0.0); 00569 vv(-0.6, -1.0); 00570 vv(0.6, -1.0); 00571 vv(0.6, 0.0); 00572 EP; 00573 00574 fl_color(fl_lighter(c)); 00575 BP; 00576 vv(-0.6, 0.6); 00577 vv(0.6, 0.6); 00578 vv(0.6, 1.0); 00579 vv(-0.6, 1.0); 00580 EP; 00581 00582 fl_color(fl_darker(c)); 00583 BC; 00584 vv(-0.8, 0.0); 00585 vv(-0.6, 0.0); 00586 vv(-0.6, -1.0); 00587 vv(0.6, -1.0); 00588 vv(0.6, 0.0); 00589 vv(0.8, 0.0); 00590 vv(1.0, 0.2); 00591 vv(1.0, 1.0); 00592 vv(-1.0, 1.0); 00593 vv(-1.0, 0.2); 00594 EC; 00595 00596 BC; 00597 vv(-0.6, 0.6); 00598 vv(0.6, 0.6); 00599 vv(0.6, 1.0); 00600 vv(-0.6, 1.0); 00601 EC; 00602 } 00603 00604 static void draw_round_arrow(Fl_Color c, float da=5.0) { 00605 double a, r, dr1=0.005, dr2=0.015; 00606 int i, j; 00607 for (j=0; j<2; j++) { 00608 if (j&1) { 00609 fl_color(c); 00610 set_outline_color(c); 00611 BC; 00612 } else { 00613 fl_color(c); 00614 BCP; 00615 } 00616 vv(-0.1, 0.0); 00617 vv(-1.0, 0.0); 00618 vv(-1.0, 0.9); 00619 for (i=27, a=140.0, r=1.0; i>0; i--, a-=da, r-=dr1) { 00620 double ar = a/180.0 * M_PI; 00621 vv(cos(ar)*r, sin(ar)*r); 00622 } 00623 for (i=27; i>=0; a+=da, i--, r-=dr2) { 00624 double ar = a/180.0 * M_PI; 00625 vv(cos(ar)*r, sin(ar)*r); 00626 } 00627 if (j&1) { 00628 EC; 00629 } else { 00630 ECP; 00631 } 00632 } 00633 } 00634 00635 static void draw_refresh(Fl_Color c) { 00636 draw_round_arrow(c); 00637 fl_rotate(180.0); 00638 draw_round_arrow(c); 00639 fl_rotate(-180.0); 00640 } 00641 00642 static void draw_reload(Fl_Color c) { 00643 fl_rotate(-135.0); 00644 draw_round_arrow(c, 10); 00645 fl_rotate(135.0); 00646 } 00647 00648 static void draw_undo(Fl_Color c) { 00649 fl_translate(0.0, 0.2); 00650 fl_scale(1.0, -1.0); 00651 draw_round_arrow(c, 6); 00652 fl_scale(1.0, -1.0); 00653 fl_translate(0.0, -0.2); 00654 } 00655 00656 static void draw_redo(Fl_Color c) { 00657 fl_scale(-1.0, 1.0); 00658 draw_undo(c); 00659 fl_scale(-1.0, 1.0); 00660 } 00661 00662 static void fl_init_symbols(void) { 00663 static char beenhere; 00664 if (beenhere) return; 00665 beenhere = 1; 00666 symbnumb = 0; 00667 00668 fl_add_symbol("", draw_arrow1, 1); 00669 fl_add_symbol("->", draw_arrow1, 1); 00670 fl_add_symbol(">", draw_arrow2, 1); 00671 fl_add_symbol(">>", draw_arrow3, 1); 00672 fl_add_symbol(">|", draw_arrowbar, 1); 00673 fl_add_symbol(">[]", draw_arrowbox, 1); 00674 fl_add_symbol("|>", draw_bararrow, 1); 00675 fl_add_symbol("<-", draw_arrow01, 1); 00676 fl_add_symbol("<", draw_arrow02, 1); 00677 fl_add_symbol("<<", draw_arrow03, 1); 00678 fl_add_symbol("|<", draw_0arrowbar, 1); 00679 fl_add_symbol("[]<", draw_0arrowbox, 1); 00680 fl_add_symbol("<|", draw_0bararrow, 1); 00681 fl_add_symbol("<->", draw_doublearrow, 1); 00682 fl_add_symbol("-->", draw_arrow, 1); 00683 fl_add_symbol("+", draw_plus, 1); 00684 fl_add_symbol("->|", draw_arrow1bar, 1); 00685 fl_add_symbol("arrow", draw_arrow, 1); 00686 fl_add_symbol("returnarrow", 0, 3); 00687 fl_add_symbol("square", draw_square, 1); 00688 fl_add_symbol("circle", draw_circle, 1); 00689 fl_add_symbol("line", draw_line, 1); 00690 fl_add_symbol("plus", draw_plus, 1); 00691 fl_add_symbol("menu", draw_menu, 1); 00692 fl_add_symbol("UpArrow", draw_uparrow, 1); 00693 fl_add_symbol("DnArrow", draw_downarrow, 1); 00694 fl_add_symbol("||", draw_doublebar, 1); 00695 fl_add_symbol("search", draw_search, 1); 00696 fl_add_symbol("FLTK", draw_fltk, 1); 00697 00698 fl_add_symbol("filenew", draw_filenew, 1); 00699 fl_add_symbol("fileopen", draw_fileopen, 1); 00700 fl_add_symbol("filesave", draw_filesave, 1); 00701 fl_add_symbol("filesaveas", draw_filesaveas, 1); 00702 fl_add_symbol("fileprint", draw_fileprint, 1); 00703 00704 fl_add_symbol("refresh", draw_refresh, 1); 00705 fl_add_symbol("reload", draw_reload, 1); 00706 fl_add_symbol("undo", draw_undo, 1); 00707 fl_add_symbol("redo", draw_redo, 1); 00708 00709 // fl_add_symbol("file", draw_file, 1); 00710 } 00711 00712 // 00713 // End of "$Id: fl_symbols.cxx 7903 2010-11-28 21:06:39Z matt $". 00714 //