Reva GUI Library: Check-in [489d7df1eb]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment: Baseline code family | ancestors | descendants | both | files | file ages | folders 489d7df1ebcd9b63113eb745af1e442c6835a4f7 ron 2010-01-07 08:32:22
Context
 2010-02-15 08:57 fixed makefile check-in: 9e6b7eff3a user: ron tags: trunk 2010-01-07 08:32 Baseline code check-in: 489d7df1eb user: ron tags: trunk 07:49 initial empty check-in check-in: 9d8611c5a3 user: ron tags: trunk
Changes

Added Makefile.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57  # Note: the fltk library has to be configured with os=$(shell uname) CPP=g++ -O3 -s OBJDIR=obj # cross compile for Windows: CROSS=0 ifeq ($(os),Darwin) INC=-Ipwd/fltk-1.3/ -I/usr/include LIB= pwd/fltk-1.3/maclib/libfltk.a -lpthread -framework Carbon -framework ApplicationServices TARGET=librevagui.dylib endif ifeq ($(os),Linux) INC=-Ipwd/fltk-1.3/ -I/usr/include LIB= pwd/fltk-1.3/linlib/libfltk.a -lXft -lfontconfig -lpthread -ldl -lm -lXext -lX11 TARGET=librevagui.so endif ifeq ($(CROSS),1) CWD=$(shell pwd) TARGET=revagui.dll MING=$(HOME)/mingw/i686-pc-mingw32 CPP=~/mingw/bin/i686-pc-mingw32-g++ -Os -s OBJDIR=wobj INC=-I$(CWD)/fltk-1.3 -I$(MING)/include LIB=-L$(CWD)/fltk-1.3/winlib -L$(MING)/lib -Wl,--subsystem,windows -mwindows\ $(CWD)/fltk-1.3/winlib/libfltk.a \ -lole32 -luuid -lcomctl32 -lwinmm -loleaut32 -lopengl32\ -lpng -ljpeg -ltiff -lz -lwsock32 endif SRC=src/revagui.cpp OBJ1:=$(SRC:.cpp=.o) OBJ=$(subst src/,$(OBJDIR)/,$(OBJ1)) dummy:$(TARGET) librevagui.dylib: $(OBJ)$(CPP) -dynamiclib -o $@$(OBJ) $(LIB) cp$@ ../bin librevagui.so: $(OBJ)$(CPP) -shared -o $@$(OBJ) $(LIB) cp$@ ../bin revagui.dll: $(OBJ)$(CPP) -shared -o $@$(OBJ) $(LIB) cp$@ ../bin $(OBJDIR)/revagui.o: src/revagui.cpp @echo$(TARGET) $(CPP) -c -o$@ $(INC)$< 

Added fltk-1.3/ANNOUNCEMENT.

     > >  1 2  The initial FLTK 1.3 is based on the final 1.1.8. 

Added fltk-1.3/CHANGES.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515  CHANGES IN FLTK 1.3.0 - Added template to generate new projects with Xcode. - Managing all Widget flags in a single location now (STR #2161) - Fixed all color related call to Fl_Color type (STR #2208) - File chooser preview now recognizes utf8 encoded text files (STR #2218) - Empty functions in Fluid no longer create an implementation (STR #2259) - Fixed Fluid dependency on X11 (STR #2261) - Updated the bundled libpng to v1.2.40 (released Sep. 10, 2009) - Fixed Fl_Choice contrast with light-on-dark settings (STR #2219) - Fixed X server "lock", if a modal dialog window is opened while a menu is active (STR #1986) - Updated mirror sites in documentation (STR #2220) - Setting a default font for Xft (STR #2216) - Temporarily limited builds to 32-bit on OX S to stay compatible to Snow Leopard - Fixed Windows compile bug with "#define USE_COLORMAP 0" (STR #2241) - Fixed glibc 2.10 compiler problems (Fedora 11 and others) with scandir() and strchr() (STR #2222) - Corrected const methods of Fl_Text_{Buffer|Display|Selection} to be declared const, corrected an Fl_Text_Buffer attrib. typo - Fixed OpenGL shared context handling (STR #2135) - Fixed gray-scale images with alpha channel (STR #2105) - Fixed unexpected shortcut behavior for Win32 (STR #2199) - Fixed documentation for Fl_Progress (STR #2209) - Fluid printing used wrong colors under Windows (STR #2195) - Updated documentation for Fl_Input_ - Fixed fl_draw_image to obey the alpha channel, hoping that this has no adverse effect on existing software (OS X only) - Added OS X cursor control to Fl_Input (STR #2169) - Fix for multiple popups, when dragging and calling fl_alert() and friends from the callback (STR #2159) - Avoiding crashes for recursive common dialogs (this does not fix the issue at hand yet) (STR #1986, 2150) - Fixed control key keycodes with modifiers on OS X - Added menu shortcut alignment for OS X - Fixed bad system menu hadling in OS X (STR #2153) - Fixed File Input mouse pointer dragging (STR #2181) - Added alternative text input awareness on OS X - Fixed 'del' keycode on OS X (must be verified for all keyboards) - Fixed OS X support for sending and receiving dnd data as utf8 - Added drop box to utf8 test that will show the utf8 encoding for the first dropped character - Restructured the unittest application - Fl_Preferences.H now doesn't include windows.h any more (Windows only, STR #2173). - Fl_Window::draw() now doesn't reset its x/y-coordinates to 0 anymore before drawing itself and its children. - All draw() methods of widgets are now protected (STR #2142). - The new configure option --enable-x11 (lowercase 'x') enables Cygwin builds under Windows (with --enable-cygwin) to use X11 instead of GDI drawing (STR #2147, #2183) and is ignored otherwise. - Added Fl_Scroll::bbox() documentation (STR #1893) - Removed an XForms compatibility "feature" that prevented the down array of Fl_Menu_Button from drawing (STR #2141). - New class Fl_Widget_Tracker to simplify safe handling of widget deletion in callbacks. This is used in Fl_Widget::do_callback() to prevent accessing widgets after deletion in the callback. - Fl_Help_View handles HTML2 font color specification (STR #890) - Copyright dates are now updated to 2009 (STR #2036) - Copy/Paste operations should now work as expected, with utf8,16 support and fltk1.1 compatibility. (STR #2104,2121). - Widgets now remove themselves from their parent group (if any), when destroyed (STR #1894) - Added flexible gap size for text buffer (STR #2046) - Fixed static linking of image libraries (STR #1962) - Fixed fl_set_spot() for Windows (STR #2101) - Added sorting to Fl_Browser_ (STR #2113) - Added utf8 support for OS X copy and paste - Improved handling of composed keys in OS X 10.5 and up - Fixed callback would not be called when shortcut was used with radio and toggle buttons in default FL_RELEASE mode. - Fixed a problem with TrackMouseEvent() (Windows only) that would generate wrong FL_LEAVE events with subwindows. TrackMouseEvent is now enabled by default (it was disabled for GNU compilers). It can be disabled by defining NO_TRACK_MOUSE. Improved test/subwindow.cxx (STR #2079) - Fixed documentation (added missing COMCTRL32.LIB dependency) - Fixed menu position close to screen border (STR #2057) - Improved stability of fl_read_image (STR #2021) - Fixed adding an idle handler during a draw() call (STR #1950) - Fl_Group::clip_children() is now public (STR #2017) - Added clarification to Fl_GL_Window mode function (STR #1945) - Fixed Fluid textcolor output (STR #1992) - Fixed wrong default value of Fl_Spinner in Fluid (STR #1991) - Fixed first modifier key event (STR #1952) - Fl_Group and Fl_Scroll now resize themselves before resizing their children (STR #2032) - "fltk-config --post foo" now creates an application bundle rather than attaching a resource fork. - Added scroll_to(int,int) to Fl_Scroll, replacing position(int,int) which now behaves as it should (STR #1303) - Fixed Fl_Scroll inside Fl_Scroll (STR #265) - Hardcoded 1.1 references in src/Makefile to 1.3 (STR #1922) - Changed font index to 32 bit - Changed font size to 32 bit - Changed widget coordinates to 32 bit - Added support for shortcuts for Fl_Input_, Fl_Value_Input, and Fl_Text_Display derived widgets (STR #1770) - Initial setup (STR #1904) - winsock dll is dynamically loaded and by default ws2_32.dll, use of winsock1 is still possible by defining USE_WSOCK1 at compile time. - Cairo support: added --enable-cairo and --enable-cairoext configure options. - visualc(6) & vc2005 devenv's are in the ide subdirectory - hide() and show() methods are now virtual from Fl_Widget, was only virtual since Fl_Window derived classes before. So now widget->hide() will work if widget is a window. CHANGES IN FLTK 1.1.9 - Improved color contrast in secondary selection blocks of Fl_Text_Display (STR #1917) - Fixed regression in callback handling (STR #1918) - Fixed wrong relative path when absolute path has a trailing slash in fl_filename_relative (STR #1920) - Fixed multiple selction of files and directories in Fl_File_Chooser (STR #1913) - Fixed MSWindows crash when selecting umlauts in Fl_Help_View (STR #1912) CHANGES IN FLTK 1.1.8 - Documentation fixes (STR #1454, STR #1455, STR #1456, STR #1457, STR #1458, STR #1460, STR #1481, STR #1578, STR #1639, STR #1645, STR #1644, STR #1792, STR #1793, STR #1742, STR #1777, STR #1794, STR #1827, STR #1843, STR #1796, STR #1815, STR #1726, STR #1753, STR #1855, STR #1862, STR #1867, STR #1874, STR #1888) - Fixed library path in Makefile (STR #1885) - Fixed image read for partial regions on X11 (STR #1716) - Fixed KDE/Gnome icon paths (STR #1795) - Fixed Tab key to wrap around menu bars (STR #1877) - Fixed possible timer leak in Scrollbar (STR #1880) - Added documentation about the potential limitations of Fl::grab on newer operating systems (STR #1747) - Fixed lockout when mixing popups and alerts (STR # 1869) - Fixed recursion crash in event handling (STR #1873) - Fixed missing return code in 'fltk-config' (STR #1875) - Fixed inconsistencies with CHANGED flags (STR #1719) - Fixed message sent to hidden widgets (STR #1849) - Fixed width calculation in Fl_Help_View (STR #1868) - Fixed offset bug in OS X pixmap code (STR #1856) - Fixed potential buffer overrun in Fl_Preferences (STR #1853) - Fixed method attributes in consecutive class declarations in FLUID (STR #1741) - FLUID checks for seperately declared callbacks to avoid a bogus "extern" declaration (STR #1776) - Added "protected" class memebrs in FLUID - Double-clicking a widget in a FLUID layout will show the item in the widget browser - Fixed color highlighting in Text_Display - Fixed 16 bit PNM image support (STR #1847) - Fixed exposure event on zero size windows (STR #1824) - Fixed overlay offset for OS X Quartz (STR #1729) - gl_font() support for Xft+X11 (STR #1809) - Fl_Gl_Window::mode() needed to hide and show the window when toggling stereo mode (STR #1846) - Fl_Gl_Window::show() did not work reliably on Mac OS X (STR #1707) - Added Fl_Group::clip_children() methods to support automatic clipping of child widget drawing (STR #1844) - Fl_Browser_ and friends now support FL_WHEN_ENTER_KEY for both Enter/Return and double-clicks (STR #1818) - Fl_Help_View did not release the images it used (STR #1817) - Shared libraries would not build on 64-bit Linux systems with an existing non-PIC FLTK installation (STR #1791) - Fl_Browser::hide() and Fl_Browser::show() did not correctly update the scrollbar (STR #1724) - The configure script now shows a summry of the configuration results (STR #1810) - "fltk-config --use-* --libs" did not list all of the dependent libraries (STR #1799) - Hiding a nested window on WIN32 caused 100% CPU (STR #1748) - Changing the window size in FLUID would not mark the project as modified (STR #1751) - Fixed fl_filename_isdir for "/"-path (STR #1761) - Fixed Fl_Chart drawing (STR #1756) - Fixed mapping of subwindows with unmapped parent windows (STR #1706) - Fixed rendering of grayscale images with alpha channel (STR #1703) - Fixed occasional incomplete refresh (STR #1681) - Improved fl_down, fl_frame, added fl_box (STR #1678) - Fixed selection of submenu items in input_choice (STR #1676) - Fixed calculation of stride for image scaling and color manipulation (STR #1673) - Made -O3 the default optimization on Cygwin/Mingw since -Os currently creates bad code (STR #1656) - OSF/Tru64 now uses 'install-sh' instead of 'install' to accomodate for a missing '-d' option (STR #1632) - New option in Fluid project settings to translate all shortcut modifiers from FL_META or FL_CTRL to FL_COMMAND - Made icon size fixed (50x50) in fl_message etc. (STR #1626) - Fixed selection of first word in Fl_Help_View - Fixed endless loop in Fl_Text_Display (STR #1655) - Allowing shortcuts in Tabs (STR #1652) - Fixed Makefile "make clean" (STR #1642, STR #1643, STR #1641) - The sample RPM spec file now enables large file support and threading support (STR #1603) - Changed minimum contrast between background and text to 99 and added more weight to the blue component to improve readability for certain color combinations (STR #1625) - Fixed VCNet OpenGL project file (STR #1617) - Fixed scrolling of clipped areas in MSWindows (STR #1601) - Fixed clipping in OS X Quartz offscreen buffers (STR #1595) - Now flush file chooser preferences after every change to avoid data loss (STR #1609) - The Fl_File_Chooser constructor now saves and restores the current group (STR #1611) - Added Fl::awake(fn*,void*) to set a handler for thread messages (STR #1536) - Added "mute sound" option to Sudoku game. - Updated the bundled zlib to v1.2.3. - Updated the bundled libpng to v1.2.16. - "make install" now uses the install command (or the included install-sh script) to copy files to the install directories, to ensure that permissions are correct. - Fixed DLL generation via MingW/Cygwin (STR #1546) - FLUID incorrectly opened the display when generating source code for Fl_Help_View widgets (STR #1318) - Fl_Double_Window did not always show the scheme background image. - Fixed first window behavior in OS X (STR #1548) - Fixed calculation of character widths for OS X Quartz rendering (no STR) - Fixed OS X mouse click handling (STR #1504) - Added missing GLUT functions so that FLTK can be used as a fairly complete C++ replacement for the original GLUT library (STR #1522) - Fl::awake() could block on X11 and OSX (STR #1537) - Updated recursive mutex code to run on platforms other than Linux and to do a run-time check to determine whether they are supported by the kernel (STR #1575) - WIN32 did check callbacks after the event processing instead of before as documented (STR #1535) - Fl_File_Chooser now hides the window before doing a callback when the user clicks on the OK button (STR #1565) - Fixed indentation of nested HTML elements (STR #1549) - Made layout of Fl_Help_Dialog consistent with other help windows and web browsers. - Improved GTK+ schemed round box (STR #1531) - Fluid avoids writing unsupported combinations of the "when()" flags (STR #1501) - Fl_Browser_ would allow keyboard callbacks even though "when()" was set to "never" (STR #1501) - Added automated little helpers to Sudoku - Added example code for Wizard with the Tabs demo (STR #1564) - Optimized Fl_Tabs drawing for speed (STR #1520) - OS X resource fork now obsolete (STR #1453) - Added chapter 10 about multithreading (STR #1532, 1533) - OS X system menu bar top level attribute support improved (STR #1505) - Fixed Quartz image drawing bug (STR #1438) - Fixed Quartz fl_read_image - Overlay drawing is now avoiding XOR mode (STR #1438) - Fixed Scroll crash in Fluid Live Mode (STR #1524) - Fixed mousewheel event propagation (STR #1521) - Fixed drawing issues of a tile in a scroll (STR #1507) - Fixed dismissing buttons in menu bars (STR #1494) - Making a child group visible in a Fl_Tabs or Fl_Wizard group now shows that tab or pane. - Added fl_open_uri() function as proposed on fltk.development. - Added Fl::has_check() which previously was prototyped and documented, but not implemented (STR #1542) - Enabled Fl::add_check() on OS X (STR #1534) - Documented tooltip inheritance (STR #1467) - Better event mouse handling fixing detached menus and sticky tooltips (STR #1463, STR #449) - Added Fl::scrollbar_size() methods that are used by all of the scrollbar-using widgets (STR #1500) - fl_read_image() was broken on Intel-based Macs (STR #1490) - Fl_Progress was using the wrong width to calculate progress (STR #1492) - Fl::x(), Fl::y(), Fl::w(), and Fl::h() did not report the desktop work area on X11 (STR #1482) - Shortcut events could be sent to the wrong window (STR #1451) - Fl_Spinner did not handle the arrow keys properly (STR #1476) - Fl_File_Browser did not calculate the width of directory items correctly (STR #1469, STR #1470) - Fl_Pack incorrectly started widgets at an offset of 1/2 the spacing value. - FLUID did not generate correct window class code if the class name was not a standard FLTK window class. - FLUID incorrectly included for widget classes that were not subclassed from a standard FLTK widget class. - The demo master test program now supports scheme selection and all demos use it (STR #1459) - fl_arc() and fl_pie() did not draw properly on WIN32 when the start and end points were identical (STR #1461) - Fl_Input and Fl_Text_Editor now hide the mouse pointer when typing into them (STR #1466) - Implemented alpha blending for Quartz, WIN32, and X11 - Check buttons did not redraw properly with box() set to FL_NO_BOX (STR #1440) - Added the Bluecurve-inspired scheme "gtk+". - Updated documentation (STR #1420, STR #1421) - Fixed font caching issue (STR #1415) - Fixed crash in fl_file_chooser (STR #1410) - Fixed Fluid hotspot bug (STR #1416) - Fixed image copy code (STR #1412) - Fixed latin-to-roman text conversion (STR #1411) - Fixed Cygwin timeout for "select" calls (STR #1151) - Improved Mac OS X subwindow handling (STR #1402) - Fixed more inconsistencies between fl_draw and fl_measure (STR #1408) - Fixed fl_measure which mistook a trailing '@@' for a symbol (STR #1406) - Fixed GLUT behavior on window creation (STR #1403) - Fixed OS X bug that would hide tooltips before they were shown (STR #1392) - Fixed Fl_Tabs tooltip reappearing (STR #1324) - Added a new demo game called "Block Attack!" - Updated the Sudoku game to show a notice about Hard and Impossible puzzles having multiple solutions which are not a bug or error (STR #1361) - Fixed filechooser to behave as documented when file pattern changes (STR #1359) - Completed the global function index and added an alphabetical list of all methods (STR #1319) - Avoiding problems with some platforms that don't implement hypot() (STR #1366) - Fixed floating point value formatting for Fl_Spinner (STR #1331) - Fixed Fl_Positioner callback when released (STR #1387) - Fixed WIN32 zero size window issue (STR #1387) - Fixed Sudoku window positioning (STR #1398) - Fluid Code Declarations can now handle C++ style comments (STR #1383) - Fixed uninitialized data in OS X and WIN32 timeout functions (STR #1374). - Fixed speed issues when measuring text on OS X with Quartz (STR #1386). - Fixed focus issues on OS X (STR #1377) - Optional precision argument when storing floats or doubles in a Preferences file (STR #1381) - Fixed callback not called when using arrow keys in Fl_Slider (STR #1333) - Changing the shortcut of a widget in fluid now marks the document as dirty (STR #1382) - Fl_Text_Editor now correctly handles middle mouse clicks (STR #1384) - Added some GLUT4 functions (STR #1370) - Added "context_changed()" function for OpenGL windows which allows efficient texture loading (STR #1372) - Added missing "const" to GLUT call (STR #1371) - Fixed stray FL_RELEASE events after clicking system areas on OS X (STR #1376) - FLUID now only writes definitions of "o" and "w" variables as needed, reducing the number of "variable is shadowed" warnings from GCC. - Added access to Xft font pointer (STR #1328) - Fixed endianness in OS X mouse cursor graphics (STR #1348) - Fixed crash on mixed use of keyboard and mouse for Fl_Menu_Button (STR #1356) - Fixed Fl_Window::visible() and shown() for OS X (STR #1341) - Fixed Fl_Window::copy_label() losing copy (STR #1332) - Documentation fixes (STR #1336, STR #1329, STR #1339, STR #1340) - Added support for floating point Fl_Spinner in the API, documentation, and Fluid (STR #1331) - Repeat button now cancels timeout if it should get deactivated during a callback (STR #1330) - Added support for assigning Fl_Menu_Items to array variables in Fluid (STR #1280) - Added --with-archflags configure option to allow passing of specific architecture-selection options to the compiler and linker. - Fixed WIN32 window stacking bug (STR #1296) - Fixed wrong code generated by FLUID for Scrollbars (STR #1287) - Loading a file would not update the Widget Properties dialog in FLUID (STR #1326) - Fixed key compose sequences for shifted keys (STR #1194) - Added text selection and copy to Fl_Help_View. - Fixed position of popup menu titles (STR #1322) - Showing any window will disable the current tooltip so it won't pop over menus (STR #1321) - Updated documentation to reflect limitation of Fl::delete_widget() (STR #1306) - Fixed line wrapping in Fl_Text_Display (STR #1227) - New function Fl::event_original_key() returns key code before NumLock handling. - Many OS X Quartz fixes (STR #1310, etc.) - Fixed shortcut and default focus for message dialogs (STR #1298) - Fixed focus issues (STR #1286, STR #1289, STR #1296) - Fixed window resizing in OS X (STR #1297) - In FLUID, declarations starting with the keyword 'typedef', 'class', or 'struct' are now treated correctly if inside a class (STR #1283) - Tabs now show the correct tooltip (STR #1282) - Included fltk.spec in configure.in (STR #1274) - Fixed insufficiently invalidated cache in Fl_Browser (STR #1265) - Attempt to fix multi monitor issues (STR #1153) - Fixed warnings when compiling w/Cygwin (STR #1152) - Fixed missing reset of flag in FLUID (STR #1187) - Fixed maximizing in OS X (STR #1221) - Fixed 'make distclean' to remove binaries inside MacOS app packages (STR #1169) - FLUID Code Viewer is now truly a viewer, not a text editor because edited text can not be saved. - Fl_Spinner is now fully supported by FLUID (STR #1158) - Fixed usage of deleted object after menu pulldown (STR #1162) - Calling fl_font(0, 0) under Xft would access a NULL pointer (STR #1205) - Setting a new value in Fl_Input_ wil now actually move cursor to the end of the input field as documented (STR #1161) - FLUID crashed on WIN32 with international characters (STR #1176) - Fl_Check_Browser did not allow the user to toggle the check boxes (STR #1232) - Fl_Help_View crashed on WIN32 with international characters (STR #1228) - Fl::run() no longer clears resources on WIN32 (STR #1231) - Fl::add_timeout() leaked resources on OSX (STR #1233) - Accented characters could not be entered on OSX (STR #1195) - The caret key lookup was missing for OS X - FLUID didn't handle loading .fl files with international characters properly with all compilers (STR #1150) - Fl_Spinner's minimum() and maximum() "get" methods were misspelled (STR #1146) - The largefile support changes in 1.1.7 broke binary compability for fl_filename_list(); you must now use "--enable-largefile" when configuring to get large file support, and the large file support definitions are added to the output of "fltk-config --cflags" (STR #1159) CHANGES IN FLTK 1.1.7 - Documentation fixes (STR #571, STR #648, STR #692, STR #730, STR #744, STR #745, STR #931, STR #942, STR #960, STR #969) - Various menu widget fixes (STR #1140, STR #1143, STR #1144) - The threads demo would display negative prime numbers on MacOS X; this appears to be a MacOS X bug, but we added a workaround to "fix" this (STR #1138) - Fl::dnd() now sets the content type of the drag to "text/uri-list" when it sees the dragged text is composed of URIs. - Fixed keyboard shortcut handling in FLUID and shortcut labeling in FLTK (STR #1129) - Fixed include path for CMake build (STR #1123) - Fixed unnecessary delay in WIN32 event handling (STR #1104) - Fixed handling of Ctrl-C in Fl_Text_Display (STR #1122) - OS X Quartz version now draw a nice resize control (STR #1099) - FLTK now enables large file support when available (STR #1087) - Fl_Clock_Output depended on a time value that was the same as an unsigned long, which is incorrect for WIN64 and VC++ 2005 (STR #1079) - Fl_Text_Display::wrap_mode() would crash if no buffer was associated with the widget (STR #1069) - Updated the default label and text colors of all widgets to use FL_FOREGROUND_COLOR instead of FL_BLACK (STR #1052) - Fl::set_fonts() now works with Xft (STR #1012) - Fl_Value_Input now uses the screen-absolute position instead of the window-relative position when dragging the value; this avoids some jumping conditions (STR #1037) - Menus now pop up fully inside the screen if possible (STR #973) - Fixed illegal access in Preferences (STR #1025) - Fixed x-offset problem in Help_Widget (STR #998) - Clipboard will persist if owner window is hidden (STR #1019) - Fixed handling of Win32 Device Contexts (STR #1007) - Fixed C++ style comments in C files (STR #997) - Fixed signedness of scanf() argument (STR #996) - Fixed cross-compiling problem (STR #995). - FLUID now knows if a static callback is already declared in a class and won't declare it 'extern' (STR #776) - Some actions in FLUID would not set the "changed" flag (STR #984, STR #999) - fl_filename_list now always appends a forward slash to directory names (STR #874) - Multiline Input will update right if a space character is inserted in word wrap mode (STR #981) - FLUID group labels redraw correctly (STR #959) - FLUID now updates color of Fl_Tabs children (STR #979) - FLUID now supports 'size_range()' (STR #851) - FLUID selection boxes now synchronised (STR #964) - fl_filename_list() now recognizes pathnames without trailing slash as directions (STR #854) - Fl_Text_Display now auto-scrolls in all directions (STR #915) - Borderless windows will not show in the taskbar anymore on X11 (STR #933) - Fixed event_text() field on FL_DND_* event on OS X and WIN32 (STR #968) - The fltk-config utility now supports "--cc" and "--cxx" options to get the C and C++ compilers that were used to compile FLTK (STR #868) - Fl_Valuator-derived widgets could show more digits than were necessary (STR #971) - Fl_GIF_Image did not handle images with an incorrect number of data bits (STR #914) - Fixed some plastic drawing artifacts (STR #906) - Fl_Help_View now draws the box outside the scrollbars, like the other scrollable widgets (STR #871) - The fltk-config script now handles invocation via a symlink (STR #869) - Updated WIN32 cut/paste code to consistently handle DOS text (STR #961) - Added shared library support for Cygwin and MingW (STR #893) - Fl_File_Chooser did not implement the user_data() methods (STR #970) - Compilation could fail if a previous installation of FLTK was in the same (non-standard) directory as an image library (STR #926) - Fixed OSX compilation problems with non-HFS filesystems (STR #972) - Problems with CMake on MinGW have been solved, thanks to Mr. "fltk.x0", who submitted the patch. (STR #863) - Fixed memory leak in Fl_Check_Browser reported by "miguel2i". (STR #967) - Fl_File_Input could draw in the wrong window (STR #958) - WIN32: Internal WM_PAINT message now ignored (STR #831) - Added Windows support for Fl_Window::xclass() (STR #848) - Floating point input field allows characters from current locale (STR #903) - Fixed integration of Fl_Input_Choice into FLUID (STR #879) - New windows touching the right screen border would be positioned all the way to the left (STR #898) - Made pie drawing size for WIN32 and OS X the same as X11 (STR #905) - Fixed OS X issue with OpenGL windows inside of Tabs (STR #602) - FLUID Code Editor would occasionally not draw the last character in the buffer (STR #798) - FLUID Declaration private flag fixed (STR #799) - FLUID overlay now shows a seperate bounding box of selected items with correct handles and a dotted boundig box for all labels (STR #790) - Fixed left overhang of large chracters in Fl_Input_ (STR #941) - Fixed button resizing in File Chooser (STR #884) - Fixed FLUID redraw issue (STR #912) - Added 32bit BMP Image file format support (STR #918) - Value Sliders would not receive focus when clicked on (STR #911) - Added redraw of some widgets to show focus change (STR #910) - Fl::set_font would not clear 'pretty' name (STR #902) - Fixed unescaped '@' in fonts demo (STR #867) - FLUID should not open the Display connection anymore if creating code only (STR #904) - Improved hidden copy / ctor implementation (STR #860) - Increased matrix stack depth and added over/underflow error (STR #924) - Reverted Mac Carbon Clipping simplification that broke subwindow clipping (STR #908, SVN r4386) - Fixed bitmap scaling code - Fixed tiny memory leak (STR #878) - Fixed hang on corrupt jpeg (STR #915) - Fixed static allocation of font buffer in demo (STR #909) - Added symbols 'refresh', 'reload', 'undo', and 'redo'. - Fixed focus loss on Fl_Window:resize() - Fl::delete_widget would hang fl_wait after deleting the window (STR #679) - Fl::paste would sometimes not recoginze external changes of the clipboard (STR #722) - Clipping fixes for OSX - Removed attempt to find items via Fl_Menu_::find_item() in linked submenus - FLUID interactive window resizing fixes (STR #873, 791) - FLUID panel resize and alignment fixes (STR #891) - Fl_Window::show(argc, argv) now sets the scheme before showing the window; this should eliminate any flickering between the standard and plastic schemes on startup (STR #886) - Selected tabs are now drawn slightly larger than unselected tabs so they stand out more (STR #882) - Round Plastic boxes now draw round (STR #841) - FL_PLASTIC_DOWN_BOX drew with artifacts (STR #852) - Changed initializations on WIN32 (STR #862) - Fl_Preferences::getUserdataPath() didn't work for sub-groups (STR #872) - Fixed some redraw issues on Windows XP. - FLUID didn't set the initial size of widgets properly (STR #850) - Fl_Tabs would steal focus away from its children on a window focus change (STR #870) - filename_relative() now converts the current directory to forward slashes as needed on WIN32 (STR #816) - Fl_File_Chooser::value() and ::directory() now handle paths with backslashes on WIN32 (STR #811) - Added the standard rgb.txt file from X11 to the test directory, allowing all platforms to try the colbrowser demo (STR #843) - Resizing of OpenGL subwindows was broken on OSX (STR #804) - The fltk-config script now supports running from a source directory (STR #840) - Fl_Browser_ didn't update the position properly when an item was deleted (STR #839) - fl_contrast() now compares the luminosity of each color (STR #837) - Fl_Input_ crashed on some platforms when wrapping international text characters (STR #836) - Fixed some BMP images loading bugs (STR #825) - Fl_File_Chooser now returns directory names with a trailing slash to avoid problems with relative filenames (STR #819) - Fl_Help_View now supports the FONT and U elements (STR #815) - OpenGL windows that were completely off-screen caused problems with some graphics cards on WIN32 (STR #831) - Multiple screen support didn't work on Windows NT and 95 (STR #821) - Fl_Scrollbar didn't compute the correct knob size when using the "nice" types (STR #845) - fl_draw() would segfault on WIN32 if no font was set; it now uses the default font (STR #828) - Fl_Browser_ was calling the callback multiple times for a single selection change with FL_WHEN_CHANGED (STR #834) - Added "filenew", "fileopen", "filesave", "filesaveas", and "fileprint" symbols with standard toolbar symbology. - Updated Fl_Tabs to check the contrast of the label color against the tab background, and to highlight the top 5 lines of the tab pane with the selection color so that selected tabs stand out more. - The example programs can now compile separate from the FLTK source distribution (STR #809) - The example programs are now installed with the documentation (STR #809) - Fixed the drawing of the Fl_Browser_ selection box (STR #786) - Dropped Codewarrier project files and support. - The FLTK string functions are now compiled in on all systems (STR #774) - Fixed symbol demo label bug (STR #777) - Fixed position of menu titles (STR #795) - Added missing Fl_Window::copy_label() method. - Fixed wrong tooltip in FLUID (STR #784) - Added zlib path to FLUID (STR #783) - Menus and other pop-up windows now obey screen boundaries on multi-screen displays (STR #781) - Fl_Chart would draw outside its bounding box (STR #780) - Added Fl::screen_count() and Fl::screen_xywh() APIs to support multi-screen displays. - FLUID now supports direct creation of widget classes. - Fl_File_Chooser now correctly handles multiple selections that are a mix of files and directories. - Fl_File_Chooser no longer resets the type() when choosing a single file, and it now works when selecting multiple directories (STR #747) - Fl_File_Icon::load_system_icons() now only loads 16x16 and 32x32 icon images to improve startup performance. - Pressing Enter in the file chooser when selecting a directory will choose that directory if it is currently shown (STR #746) - Added a fl_file_chooser_ok_label() function to set the "OK" button label for the fl_file_chooser() and fl_dir_chooser() functions. - Added Fl_File_Chooser::ok_label() methods to set the "OK" button label. - The fl_ask() function is now deprecated since it does not conform to the FLTK Human Interface Guidelines. - The Fl_File_Chooser window now properly resizes its controls (STR #766) - The Fl_Help_Dialog window now properly resizes its controls (STR #768) - The Fl_File_Chooser favorites window is now resizable (STR #770) - Now provide FL_PLASTIC_ROUND_UP/DOWN_BOX box types which are used by the plastic scheme. - FLUID windows that are resized through the widget panel now remain resizable by the window manager. - Increased the size of the background image used by the plastic scheme to reduce the CPU load of redraws (STR #769) - Fixed a syntax highlighting bug in the editor demo. - Fl_Progress now contrasts the label color with the bar color, so labels will be readable at all times. - fl_read_image() didn't use the right red, green, and blue masks on XFree86. - Fixed Quickdraw drawing of 3 and 4 sided polygons (STR #765) - Fixed fl_message() code so that it does not get accidentaly addded to the current group (STR #253) - FLUID now highlights code in the widget callback and code editors. - FLUID now supports printing of windows. - Fixed inactive drawing of border, embossed, and engraved box types. - Added Fl_Spinner widget (another combination of existing widgets in a header file) - FLUID now provides support for UI templates. - fl_not_clipped() incorrectly used the current window dimensions for gross clipping, which interfered with off-screen rendering. - Fl_Window::draw() and Fl_Window::iconlabel() could leak memory if copy_label() was used on the window. - fl_shortcut_label() now shows letter shortcuts in uppercase, e.g. "Ctrl+N" instead of "Ctrl+n" to be consistent with other toolkits. - FLUID now provides unlimited undo/redo support. - FLUID now provides an option to choose which scheme (default, none, plastic) to display. - Fixed scheme background issue with windows in FLUID. - In FLUID, new widgets are now created with the ideal size by default, and menu bars are positioned to use the entire width of the window. - Added Layout/Widget Size submenu to select default label and text size (Tiny, Small, and Normal). - Added Edit/Duplicate command to FLUID to duplicate the current selection. - FLUID now tracks the current state of the widget bin and overlays. - Now fill the widget image paths with relative filenames. - Fixed frame drawing of Fl_Text_Display (STR #762) - Fl_Clock_Output::value() did not return the previously set value (STR #748) - Added comment type to FLUID. This is useful for generating copyright notices in the source and header files. - Fl_Valuator would not format text output with decimal point when the step value was fractional, but above 1. - fl_filename_relative() didn't compare drive letters in a case-insensitive way (STR #741) - Fixed menu item width calculations with symbols (STR #740) - The keyboard shortcut handling code did not handle 8-bit characters properly (STR #731) - Fl_JPEG_Image could still crash an app with a corrupt JPEG file (STR #739) - Using the layout alignment controls on a menu widget would cause FLUID to crash (STR #742) - Added QNX bug workaround for menu handling (STR #704) - Added Greg Ercolano's simple Fl_Input_Choice widget which is a combination of the Fl_Input and Fl_Menu_Button widgets (STR #650) - Fl_Multiline_Input now scrolls the full height of the widget instead of 5 lines when the user presses PageUp or PageDown (STR #727) - CMake build fixes (STR #724) - Fl_Browser::swap() didn't handle redraws properly when the swapped lines had different heights (STR #729) - FL_MOUSEWHEEL events are now sent first to the widget under the mouse pointer and then to the first widget which accepts them. This is similar to the way shortcut events are handled and is consistent with the way the mouse wheel is handled by other toolkits. - Fl::wait() could block on WIN32 if the window was deleted via Fl::delete_widget() (STR #679) - Fl_Preferences::RootNode did not find the user's home directory on some non-US versions of Windows (STR #720) - Fl_Window::hide() didn't delete the current clipping region on WIN32, causing a GDI resource leak in some situations (STR #723) - Removed a few warnings when compiling on OS X - Fl_Menu now draws the arrow more like other toolkits and 2.0 (STR #651) - Fixed a VC++ compiler error in Fl_JPEG_Image.cxx (STR #676) - FL_SHADOW_BOX/FRAME drew outside of the bounding box (STR #694) - Fl_Widget::copy_label(NULL) didn't work (STR #707) - Fl_Choice now allows click selection like Fl_Menu_Button and Fl_Menubar (STR #706) - Updated cmake support (STR #645) - Fl_Check_Browser didn't draw properly when inactive (STR #681) - Removed some redundant code in Fl_Group::handle() (STR #669) - The file chooser didn't always deactivate the OK button when necessary (STR #653) - Image drawing on OSX changed the current drawing colors (STR #662) - Fixed some compiler errors on WIN32 (STR #647, STR #726) - FLUID didn't update the widget panel X/Y/W/H values when moving the selected window (STR #701) - FLUID didn't use the label type constant names for menu items, causing them to be drawn using the normal label type (STR #668) - Fl_File_Chooser was slow with large directories (STR #654) - FLUID didn't add xclass() calls to windows (STR #718) - The X11 DND code did not correctly select a text format for incoming data (STR #711) - Fixes to Fl_JPEG_Image error handler. - Fl_Menu::popup() and ::pulldown() would crash an application if a callback created widgets before they returned (STR #685) - Fl_Double_Window would cause a full redraw, even if only small parts of the UI were changed on Mac OS X. - Fl_JPEG_Image did not correctly handle errors reported by the JPEG library (STR #652) - Fl_Menu now draws sub-menu arrows like other toolkits and FLTK 2.0 (STR #651) - Fixed a compiler warning in Fl_Window.H (STR #641) - Tooltips disabled shortcut processing (STR #643) - Fl::event_number() didn't always match the value sent to the handle() method (STR #634) - Fl_Shared_Image::reload() didn't set the image_ pointer properly in all cases (STR #632) - Fl_Help_View::topline() incorrectly set the changed() flag (STR #631) - Fl_Choice::value() now supports NULL or -1 to deselect the current item (STR #637) - More VC++ 6 project file fixes (STR #638) - Added missing Watcom makefile in the test directory (STR #636) - Fl_Text_Display::word_left would hang if the cursor was at position 0 (STR #635) CHANGES IN FLTK 1.1.6 - Documentation updates (STR #552, STR #608) - Added the 2.0 Fl_Widget::copy_label() method to allow FLTK 1.x applications to have their label strings managed by FLTK (STR #630) - Added Fl::delete_widget() method to safely delete widgets in callback methods (STR #629) - Fl_Widget::damage(uchar,int,int,int,int) didn't clip the bounding box properly (STR #626) - Windows could appear on the wrong screen on OSX (STR #628) - Fl_Double_Window produced an error on resize with X11 - FLUID didn't display menu items using images properly (STR #564) - Fl_Sys_Menu_Bar didn't compile on case-sensitive file-systems (STR #622) - FLUID didn't handle default function parameters properly (STR #579) - Moving or resizing widgets in FLUID didn't always update the widget panel (STR #600) - FLTK windows could appear off-screen on X11 (STR #586) - The configure script did not support --disable-localfoo to completely disable image file support (STR #582) - The Visual C++ 6.0 project files still listed the old JPEG, PNG, and ZLIB library names (STR #577) - Fixed the scandir() conditional code for HP-UX 11i (STR #585) - Fl_Text_Display didn't support CTRL/CMD-A/C (STR #601) - Watcom fixes (STR #581, STR #584, STR #594, STR #595, STR #623, STR #627) - Fixed library include order when building DSOs on MacOS X (STR #596) - fl_xid() could cause a WIN32 application to crash (STR #560, STR #576, STR #618) - Fl_Browser::remove_() removed the item from the list before computing the item height, which caused problems with some programs (STR #613) CHANGES IN FLTK 1.1.5 - Documentation updates (STR #568, STR #570) - Shortcuts were incorrectly underlined in multi-line labels (STR #566) - More CMake updates (STR #499) - The Watcom C++ compiler needed a small change (STR #567) - Added DESTDIR support and now remove all man pages for the "uninstall" target (STR #545) - Fix PNG drawing on buggy WIN32 graphics cards (STR #548) - The configure script didn't propagate the CPPFLAGS environment variable (STR #549) - The numpad keys didn't work properly on WIN32 (STR #502) - fl_input() and friends now set the input focus to the text field when the dialog is shown (STR #553) - Fixed background color mixup when drawing Fl_Choice menus (STR #544) - Fixed MingW makefiles (STR #550) - More VC++ project file tweaking (STR #559) - Fl_PNG_Image didn't use the png_set_trns_to_alpha function when available (STR #547) - The FL_UNFOCUS event wasn't always sent when switching tabs (STR #558) CHANGES IN FLTK 1.1.5rc3 - Documentation updates (STR #505, STR #513) - Updated PNG library source to 1.2.7. - Updated ZLIB library source to 1.2.1. - Fixed VC++ project file problems (STR #476, STR #478, STR #520, STR #527, STR #537) - Now look for 8 bits of alpha when the developer has requested FL_RGB8 (STR #541) - The last line in an Fl_Help_View widget was not aligned properly (STR #536) - The "search" symbol looked like a Q (STR #536) - Changed Fl_Help_View::get_color() to use a lookup table to avoid serious Borland C++ 5.5 compiler bugs (STR #533) - Fixed Watcom compiler warnings with FL/Fl_Widget.H (STR #540) - The image class copy() methods did not always make a separate copy of the image data (STR #539) - Fixed an edge case in fl_old_shortcut() that could cause it to read beyond then end of the shortcut string (used for XForms named shortcuts) - Added (unsupported) CMake files (STR #499) - Tooltips would not reappear on the same widget, and the initial tooltip delay was not used after a tooltip was shown (STR #465) - Fixed a compile problem with the Linux 2.6 threading support (STR #483) - Fixed problems with 2-byte Xpm files on 64-bit platforms (STR #525) - FLTK didn't handle the ReparentNotify event on X11 (STR #524) - The old source file "fl_set_gray.cxx" is not needed (STR #516) - Fl_Text_Display still called delete[] instead of free() in one place (STR #503) - The symbol test program did not handle the @+ symbol properly (STR #490) - Fl_File_Chooser didn't correctly call isprint() and isspace() when checking to see if the current file was text that can be previewed (STR #517) - FLUID didn't compile with Borland C++ due to a compiler bug (STR #496) - Fl_Positioner did not handle reversed min and max values (STR #510) - fl_descent(), fl_height(), and fl_width() would crash a program if you didn't call fl_font() first; they now return -1 if no font is set (STR #500) - Added test/unittests to verify pixel drawing and alignment across platforms - Fl_Menu_::find_item() didn't determine the menu path properly (STR #481) - The build system now installs image library header files in FL/images/filename.h so that FLTK programs will use the same header files as the FLTK image libraries. - The build system now creates image libraries named "libfltk_name.a" instead of "libname.a" to avoid clobbering an existing installed library (STR #480) CHANGES IN FLTK 1.1.5rc2 - Documentation updates (STR #365, STR #399, STR #407, STR #412, STR #414, STR #452, STR #462) - Fl_Text_Display did not handle drawing of overlapping text (italic next to plain, etc.) properly (STR #381) - All of the core widgets now consistently set changed() before calling the callback function for a change in value; this allows programs to check the changed() state in a callback to see why they are being called (STR #475) - Fl_File_Chooser did not handle some cases for filename completion (STR #376) - Fl_Help_View didn't properly compute the default maximum width of the page properly, resulting in non-wrapped text in table cells (STR #464) - Fl_Text_Editor no longer tries to emulate the Emacs CTRL-A shortcut to move to the first column, since there is a key for that and the widget does not emulate any other Emacs keys (STR #421) - Fl_File_Chooser always disabled the OK button when the user pressed DELETE or BACKSPACE (STR #397) - Added Fl_Browser::swap() methods (STR #459) - Fl_Counter didn't use a thin down box for the text field if the box type was set to FL_THIN_UP_BOX (STR #467) - Fl_Help_View now resets the scrollbars if they go outside the current view (STR #464) - fl_dir_chooser() did not show the previous selection as documented (STR #443) - Fl_Text_Display used delete[] instead of free() in some places (STR #466) - FLTK now includes copies of the PNG, JPEG, and ZLIB libraries for platforms that do not have them (STR #441) - The fltk-config script did not include the "-mno-cygwin" option under CygWin (STR #434) - Fl_Help_View::find() did not check for a NULL value (STR #442) - Added search symbol to the search field of Fl_Help_Dialog (STR #417) - Added two new symbols, @search and @FLTK, which can be used in labels. - MacOS X: fixed NumLock mixup, added support for FL_Menu and FL_Delete keys on external (PC) keyboards (STR #445) - Fl_File_Icon::draw() did not support drawing of complex polygons in icon descriptions (STR #474) - The configure script now offers options for JPEG, PNG, and ZLIB libraries (STR #416) - The first menu item in a list would not go invisible (STR #406) - Fl_Text_Buffer::replace() now range checks its input (STR #385) - FLTK now builds with the current release of MinGW (STR #325, STR #401, STR #402) - FLTK now honors the numlock key state (STR #369) - The Fl_Text_Display widget did not redraw selections when focus changed (STR #390) - The plastic background image is now less contrasty (STR #394) - Fl_Scroll now uses a full redraw when the scheme is set to plastic and the box type is a frame (STR #205) - Fl_Window::resize() did not work properly with KDE 3.2 (STR #356) - FLTK didn't delete font bitmaps when the last OpenGL window was deleted, preventing future text from displaying (STR #310) - FLUID didn't include a full initialization record for the trailing NULL menu items (STR #375) - Fl_Browser::item_width() did not properly handle format modifiers (STR #372) - Fl_Browser::item_height() did not handle columns properly (STR #371) - Fl_Gl_Window's on WIN32 now prefer accelerated pixel formats over generic formats (STR #382) - Fl_Window::resize() did not work on some systems if the window was not shown (STR #373) - FLUID did not write the user_data type if the user_data field was empty (STR #374) - The value(const Fl_Menu_Item*) method was not implemented for Fl_Choice (STR #366) - Fl_Pack didn't draw child widget labels the same way as Fl_Group, causing display problems (STR #360) - fl_read_image() didn't work when reading from an offscreen buffer with some X11 servers (STR #364) CHANGES IN FLTK 1.1.5rc1 - Documentation updates (STR #186, STR #245, STR #250, STR #277, STR #281, STR #328, STR #338) - fl_scroll() did not handle scrolling from off-screen on WIN32 (STR #315) - Fl_File_Chooser did not allow manual entry of a drive letter (STR #339) - Fl_Menu now uses the boxtype to redraw the menu background (STR #204) - Fl_Scroll now shows the background image when a framed box type is used and the Fl_Scroll is a direct decendent of a window (STR #205) - Added a new_directory_tooltip string pointer to allow localization of the file chooser's new directory button (STR #340) - Added Fl_Menu_::find_item() method (STR #316) - The Fl_Widget copy operator definitions were not conditionally compiled properly (STR #329) - FLUID's Layout functionality did not move child widgets when laying out group widgets (STR #319) - FLUID's Layout->Center In Group functionality did not properly handle widgets that were children of a Fl_Window widget (STR #318) - The Fl_Text_Display destructor did not remove the predelete callback associated with the current buffer (STR #332) - Fixed several bugs in the MacOS X Fl::add_fd() handling (STR #333, STR #337) - The Fl_Text_Display widget did not display selections set by the application (STR #322) - FLUID crashed if you did layout with a window widget (STR #317) - Fl_Scroll::clear() didn't remove the child widget from the Fl_Scroll widget (STR #327) - Fl_Value_Slider::draw_bg() didn't always apply the clipping rectangle (STR #235) - fl_filename_relative() returned the wrong string if the absolute pathname was equal to the current working directory (STR #224) - Fl_Help_Dialog didn't correctly restore the scroll position when going forward/back in the link history if the file changed (STR #218) - glutGetModifiers() did not mask off extra state bits, confusing some GLUT-based applications (STR #213) - Fixed mouse capture problems on MacOS X (STR #209, STR #229) - Fl_Sys_Menu_Bar is now built into the library for MacOS X (STR #229) - Fl_Menu_ now provides item_pathname() methods to get the "pathname" of a menu item, e.g. "File/Quit" (STR #283) - Fl_Text_Display now provides cursor_color() methods to get and set the cursor color (STR #271) - Fl_Scroll didn't honor FL_NO_BOX (STR #305) - FLUID declaration blocks didn't support public/private definitions (STR #301) - Fl_Preferences incorrectly created the preferences directory before necessary (STR #247) - The WIN32 project files still defined the (obsolete) FL_STATIC constant (STR #279) - Fl_Text_Display::buffer() did not support NULL values, making it impossible to clean up text buffers from a subclass (STR #295) - Fl_Text_Display did not support a NULL unfinishedStyleCB function (STR #241) - Fl::background2() incorrectly marked the foreground color as initialized (STR #255) - Fixed the X11 CTRL + "-" detection code to properly track the state of the CTRL key (STR #264) - Fl_File_Icon::load_system_icons() didn't support KDE 3.x (STR #299) - WIN32's scandir() emulation did not allocate enough memory for directory names (STR #263) - Fl::compose() did not handle special keys like backspace properly (STR #293) - Fl_Choice did not clip its text when drawing using the plastic scheme (STR #287) - Fl_Group incorrectly mapped the emacs CTRL keys to keyboard navigation (STR #228) - Fl_File_Browser::load() didn't handle a NULL directory name (STR #266) - 64-bit library fixes (STR #261) - The Fl_Valuator::format() function did not limit the size of the number buffer (STR #268) - The keypad Enter key works as the normal Enter/Return key in common widgets (STR #191) - Fixed some OS/2-specific build problems (STR #185, STR #197) - Calling Fl_Text_Display::buffer() with the same buffer would cause an application to lockup (STR #196) - Some of the widgets could crash an application if the cursor was changed after a window was deleted (STR #181) - The Fl_Gl_Window WIN32 pixel format code did not choose the pixel format with the largest depth buffer (STR #175) - The configure script didn't leave space between the CFLAGS/CXXFLAGS and X_CFLAGS variables (STR #174) - The Fl_JPEG_Image and Fl_PNG_Image classes did not trap errors from the corresponding image libraries (STR #168) - Added "--with-links" configure option to control whether symlinks are created for the FLTK header files (STR #164) - Added new hoverdelay() to Fl_Tooltip to control how quickly recent tooltips appear (STR #126) - FLUID now sets the size range when a window is shown. This seems to be necessary with some window managers (STR #166) CHANGES IN FLTK 1.1.4 - The fl_read_image() function was not implemented on OSX (STR #161) - VC++ 7.1 didn't like how the copy operators were disabled for the Fl_Widget class; now include inline code which will never be used but makes VC++ happy (STR #156) - Fixed an IRIX compile problem caused by a missing #include (STR #157) - FLUID didn't write color/selection_color() calls using the symbolic names when possible, nor did it cast integer colors to Fl_Color (STR #146) - Fl_File_Chooser was very close for multiple file selection in large directories (STR #140) - Fl_Text_Display/Editor did not disable the current selection when focus was shifted to another widget (STR #131) - Fl_Choice didn't use the normal focus box when the plastic scheme was in use (STR #129) - Fl_Text_Editor didn't use selection_color() consistently (STR #130) - The fltk_forms, fltk_gl, and fltk_images DSO's and HP-UX shared libraries are now linked against the fltk shared library to provide complete dependency resolution (STR #118) - The configure.in file did not work with autoconf 2.57. - FLUID didn't redraw widgets when changing the X, Y, W, or H values in the widget panel (STR #120) - Fl_Window::show(argc, argv) wasn't calling Fl::get_system_colors() as documented (STR #119) - DSO (shared library) building wasn't quite right for some platforms (STR #118) - OSX: some changes to make ProjectBuilder compiles possible. - OSX: FLTK would not know where a window was positioned by the OS. As a result, popup menus could open at wrong positions. CHANGES IN FLTK 1.1.4rc2 - Fl_Window::show(argc,argv) incorrectly opened the display prior to parsing the arguments; this prevented the "-display foo" option from working (STR #111) - Images were not clipped properly on MacOS X (STR #114) - Fl::reload_scheme() and Fl::scheme("foo") incorrectly called Fl::get_system_colors(). This prevented an application from setting its own color preferences (STR #115) - The 'Enter' key event on OS X would not set Fl::e_text. - Changed behaviour of FLUID to always paste into a selected group (STR #88) - Menuitem now changes font, even if fontsize is not set (STR #110) - Swapped shortcut labels in OS X (STR #86) - Non-square Fl_Dial would calculate angle from user input wrong (STR #101) - Updated documentatiopn of fl_draw (STR #94) and Fl_Menu_::add() (STR #99) - FLUID collapse triangle events were not offset by horizontal scroll (STR #106) - QuitAppleEvent now correctly returns from Fl::run() instead of just exiting (STR #87) - Hiding the first created OpenGL context was not possible. FLTK now manages a list of contexts (STR #77) - FLUID didn't keep the double/single buffer type for windows. - FLTK didn't work with Xft2. - OSX window resizing didn't work (STR #64) - Fixed MacOS X shared library generation (STR #51) - Several widgets defined their own size() method but didn't provide an inline method that mapped to the Fl_Widget::size() method (STR #62) - Fl_Scroll didn't provide its own clear() method, so calling clear() on a Fl_Scroll widget would also destroy the scrollbars (STR #75) - Fl::event_text() was sometimes initialized to NULL instead of an empty string (STR #70) - fl_draw() didn't properly handle a trailing escaped "@" character (STR #84) - Added documentation for all forms of Fl_Widget::damage() (STR #61) - Fl_Double_Window now has a type() value of FL_DOUBLE_WINDOW, to allow double-buffered windows to process redraws properly on WIN32 (STR #46) - Added FL_DAMAGE_USER1 and FL_DAMAGE_USER2 damage bits for use by widget developers (STR #57) - Fl_Help_View didn't support numeric character entities (STR #66) - Menu shortcuts didn't use the Mac key names under MacOS X (STR #71) - CodeWarrior Mac OS X updated to work with current CW8.3 (STR #34) - Apple-C/X/V/Z didn't work in the Fl_Input widget due to a bad mapping to control keys (STR #79) - Added the OSX-specific fl_open_callback() function to handle Open Documents messages from the Finder (STR #80) - The configure script contained erroneous whitespace in various tests which caused errors on some platforms (STR #60) - The fltk-config script still supported the deprecated --prefix and --exec-prefix options; dropped them since they serve no useful purpose and would never have worked for the intended purpose anyways... (STR #56) - fl_filename_list returned 0 on Win32 if no directory existed (STR #54) - Pressing 'home' after the last letter in a Text_Editor would move the cursor to pos 0 (STR #39) - Fl::get_key(x) would mix up Ctrl and Meta on OS X (STR #55) - The configure script used the wrong dynamic library linking command for OSX (STR #51) - The Fl_Text_Editor widget did not set changed() nor did it call the widget's callback function for FL_WHEN_CHANGED when processing characters that Fl::compose() handles (STR #52) CHANGES IN FLTK 1.1.4rc1 - The file chooser did not reset the click count when changing directories; if you clicked on a file in the same position after changing directories with a double-click, the chooser treated it as a triple click (STR #27) - Symbols with outlines did not get drawn inactive. - The Fl_Help_View widget now provides a find() method to search for text within the page. - The Fl_Help_Dialog widget now provides a search box for entering text to search for. - The default font encoding on OSX did not match the default on WIN32 or X11. - Menu items were not drawn using the font specified in the Fl_Menu_Item structure (STR #30) - Long menus that were aligned such that the top of an item was exactly at the top of the screen would not scroll (STR #33) - The OS issues appendix incorrectly stated that MacOS 8.6 and 9 were supported; they are not (STR #28) - Fixed handling of nested double-buffered windows (STR #1) - Showing a subwindow inside a hidden window would crash the application (STR #23) - OSX users couldn't enter some special chars when using some foreign key layouts (STR #32) - Hiding subwindows on OSX would hide the parent window (STR #22) - Added thin plastic box types. - Fl_Pack ignored the box() setting and cleared any unused areas to the widget color; it now only does so if the box() is set to something other than FL_NO_BOX. - Updated the Fl_Tabs widget to offset the first tab by the box dx value to avoid visual errors. - Updated the plastic up box to draw only a single border frame instead of the old double one for improved appearance. - Updated the default background color on OSX to provide better contrast. - Fl_Text_Display and friends now look for the next non-punctuation/space character for word boundaries (STR #26) - gl_font() didn't work properly for X11 when Xft was used (STR #12) - Fl_File_Browser incorrectly included "." on WIN32 (STR #9) - Include shellapi.h instead of ShellAPI.h in the WIN32 drag-n-drop code in order to work with the MingW cross compiler (STR #6) - The cursor was not properly restored when doing drag-n-drop on X11 (STR #4) - Fl::remove_fd() didn't recalculate the highest file descriptor properly (STR #20) - Fl_Preferences::deleteGroup() didn't work properly (STR #13) - Fixed the fl_show_file_selector() function - it was copying using the wrong string size (STR #14) - fl_font() and fl_size() were not implemented on MacOS X. - Sorted the icon menu bar in FLUID. - Fixed minor memory access complaints from Valgrind - Compiling src/flstring.h on OS X with BSD header would fail. - Fl_Text_Editor didn't scroll the buffer when the user pressed Ctrl+End or Ctrl+Home. - Fl_Text_Editor didn't show its cursor when the mouse was moved inside the window. - FLUID now uses an Fl_Text_Display widget for command output, which allows you to copy and paste text from command output into other windows. - Fl_Gl_Window could cause a bus error on MacOS X if the parent window was not yet shown. - FLUID could crash after displaying a syntax error dialog for the callback code. - FLUID would reset the callback code if you opened the widget panel for multiple widgets. - Added a NULL check to Fl_Text_Display (SF Bug #706921). - The fltk-config script placed the LDFLAGS at the wrong place in the linker options. - Fl_Text_Display didn't draw the outer box in the right dimensions, so it was invisible. - Fl_Help_Dialog used the same color for links as for the background, causing links to be invisible on pages without a background color set. CHANGES IN FLTK 1.1.3 - Documentation updates. - FLTK now ignores KeyRelease events when X11 sends them for repeating keys. - FLUID now supports up to two additional qualifiers before a class name (FL_EXPORT, etc.) to aide in developing DLL interfaces for WIN32. - Additional NULL checks in Fl_Button, fl_draw_boxtype(), Fl_File_Chooser, and Fl_Window::hotspot(). - The Fl_Preferences header file needed to FL_EXPORT all of the nested classes for WIN32. - Fl_Double_Window couldn't be nested on WIN32. [SF Bug #658219] - Fl_Slider didn't call the callback function when the user changed the value using the keyboard and the "when" condition was FL_WHEN_RELEASE. [SF Bug #647072] - Lines with less than 2 unique vertices and polygons with less the 3 unique vertices were not drawn properly. [SF Bug #647067] - The size_range() values were not honored under MacOS X. [SF Bug #647074] - OpenGL windows didn't resize correctly on MacOS X. [SF Bug #667855] - The menus incorrectly used the overlay visual when one or more menu items contained an image. [SF Bug #653846] - Changed some error messages to use Fl::error() instead of fprintf()... - Fl_Text_Buffer and Fl_Text_Display used free to free memory that was allocated using the new operator. - Tweeked the plastic scheme under MacOSX to better match the colors. - The Fl_Image.H always included the x.H header file, which included many system headers that could interfere with normal GUI applications. It now uses the corresponding based types for the image id and mask to avoid this. - The FLUID widget panel wasn't sorted, so keyboard navigation was strange. [SF Bug #647069] - Fl_Scroll didn't compute the location of labels to the right or below when determining the area to erase. - Added backward-compatibility macro for filename_setext(). - Fl_Bitmap::copy(), Fl_Pixmap::copy(), and Fl_RGB_Image::copy() all could overflow the source image when scaling the image. - Double/triple clicks in Fl_Input fields didn't copy the expanded selection to the clipboard. - Fl_Glut_Window and Fl_Gl_Window didn't always initialize the OpenGL context on MacOS. CHANGES IN FLTK 1.1.2 - Fl_Menu_Bar now supports drawing vertical dividers between menu items and submenus in the menu bar. - Fl_File_Chooser::value() didn't return NULL when the user clicked Cancel while selecting a directory. This bug also affected fl_dir_chooser(). - Fl_Menu_::add(const char *) used too small a menu item label buffer and didn't do bounds checking. - Eliminate some compiler warnings with CodeWarrier under WIN32 (Paul Chambers) - Fl_Gl_Window widgets did not resize properly under MacOS X. - The cursor could be set for the wrong window in the text widgets. - Fl_Check_Browser didn't provide const char * add methods as documented. - Fl_Check_Browser didn't draw the same style of check marks at the other widgets. - Fl_Button, Fl_Choice, and Fl_Menu_Button incorrectly activated the button/menu when the spacebar was pressed in conjunction with shift, control, alt, or meta. - FLTK should now compile with Xft 2.0. - Some versions of Tru64 4.0 have snprintf and vnsprintf, but don't have the prototypes for those functions. - FLTK had trouble doing character composition with some keyboard layouts under X11 (in particular, Belgian). - Fl_Text_Editor would cause a segfault if the user pressed CTRL-V (paste) without having any data in the clipboard... - The tab key moved backwards in menus instead of forwards. Shift-tab still moves backwards. - The redraw_label() method didn't damage the parent window when the label was outside the widget's bounding box. - Added a "draw_children()" method to Fl_Group to make subclassing Fl_Group with a custom draw() function easier. - Fl_Text_Editor now supports basic undo functionality. - FLUID now uses Fl_Text_Editor widgets for all multi-line code fields. - Added new widget bin and icons to FLUID. - FLUID would try running multiple commands in parallel, even though it wasn't capable of handling it. - FLUID didn't generate code for some attributes when using custom/named widget classes. - Added a new FL_COMMAND state bit which maps to FL_CTRL on X11 and WIN32 and FL_META on MacOS. - MacOS keyboard modifiers mapping corrections. Cmd and Control are no longer swapped, event_key and event_text return (mostly) the same values as on other platforms. - The Fl_Tabs widget should no longer be a focus hog; previously it would take focus from child widgets. - The file chooser now activates the OK button when opening a directory in directory selection mode. - Fixed a bug in the file chooser when entering an absolute path. - Back-ported some FLTK 2.0 tooltip changes to eliminate erroneous tooltip display. - MacOS windows were resizable, even when size_range would not allow for resizing. - Fl_Text_Editor now supports Shift+Delete, Ctrl+Insert, and Shift+Insert for cut, copy, and paste, respectively. - Fl_Text_Display didn't restore the mouse pointer when hidden. - Fl::arg() now ignores the MacOS X -psn_N_NNNNN option. - Added another change to the WIN32 redraw handling for the MingW compilers. - Fl_File_Chooser didn't handle WIN32 home directories that used backslashes instead of forward slashes. - Fl_Text_Display didn't limit the resize height to 1 line. - Fl_Scrollbar widgets incorrectly took keyboard focus when clicked on. This caused widgets such as Fl_Text_Display to hide the cursor when you scrolled the text. CHANGES IN FLTK 1.1.1 - Fl_Text_Display didn't always show the cursor. - Fl_Tabs now only redraws the tabs themselves when making focus changes. This reduces flicker in tabbed interfaces. - The WIN32 redraw handler now correctly merges the FLTK and Windows redraw regions. - The Fl_Text_* widgets use the C++ bool type, which is not supported by older C++ compilers. Added a configure check and workaround code for this. - Fl_X::set_xid() didn't initialize the backbuffer_bad element that was used with XDBE. - Fl_Shared_Image::uncache() was not implemented. - Fl::set_font() didn't 0-initialize all font descriptor data. - Some OpenGL implementations don't support single- buffered visuals. The Fl_Gl_Window class now emulates single-buffered windows using double-buffered windows. - Added a workaround for a compiler bug in Borland C++ that prevented Fl_Help_View.cxx from compiling. - Checkmarks didn't scale properly; copied the 2.0 check mark code over. - Replaced several memcpy's with memmove's for portability (memmove allows for overlapping copies, memcpy does not) - Bug #621737: Fl_Bitmap::copy(), Fl_Pixmap::copy(), and Fl_RGB_Image::copy() now range-check the new width and height to make sure they are positive integers. - Bug #621740: the WIN32 port needed to handle WM_MOUSELEAVE events in order to avoid problems with tooltips. - Fl_PNM_Image didn't set the "alloc" flag for the data, which could lead to a memory leak. - fl_filename_match() was inconsistently doing case- insensitive matching. - Fl_Button redraw fix for bug #620979 (focus boxes and check buttons). - Fl_Text_Display fix for bug #620633 (crash on redisplay). - Fl_Output now calls its callback when the user clicks or drags in the widget. - Shortcuts now cause buttons to take focus when visible focus is enabled. - fl_filename_relative() didn't check that the path was absolute under WIN32. - fl_filename_relative() didn't check that the path was on the current drive under WIN32. - The Fl_BMP_Image class now handles 16-bit BMP files and BMP files with a transparency mask. - The fltk-config script didn't add the required include path, if any, when compiling a program. - Added a license clarification that the FLTK manual is covered by the same license as FLTK itself. - Fl_Check_Browser wasn't documented. - Fl_Preferences::Node::addChild(), deleteEntry(), and remove() didn't set the "dirty" flag. - The "no change" button didn't work in the FLUID widget panel. - Vertical scrollbars did not draw the arrows inactive when the scrollbar was inactive. CHANGES IN FLTK 1.1.0 - Documentation updates. - Added a Fl_Widget::redraw_label() method which flags a redraw of the appropriate area. This helps to eliminate flicker when updating the value of a widget. - Fl_Wizard::value() now resets the mouse cursor to the window's default cursor. - Fl_File_Chooser::type() didn't enable/disable the new directory button correctly. - Fl_Preferences::entryExists() did not work properly. - FLUID's image file chooser pattern was incorrect. - Fl_File_Icon::load_system_icons() now detects KDE icons in /opt/kde, /usr/local, and /usr automatically, and supports the KDEDIR environment variable as well. - Submenus now display to the left of the parent menu if they won't fit to the right. Previously they would display right on top of the parent menu... - Fl_Menu_:add() didn't handle a trailing "\" character gracefully. - Clicking/dragging the middle mouse button in a scrollbar now moves directly to that scroll position, matching the behavior of other toolkits. - Added some more range checking to the Fl_Text_Display widget. - The editor demo did not correctly update the style (syntax highlighting) information. CHANGES IN FLTK 1.1.0rc7 - Updated the Fl_Text_Buffer and Fl_Text_Display classes to be based on NEdit 5.3 (patch from George Garvey). - Fixed a problem with Fl::wait(0.0) on MacOS X 10.2; this affected the fractals demo and other OpenGL applications. - Fl_Glut_Window now takes keyboard focus and handles shortcut events. - The MacOS X implementation of fl_ready() now checks the event queue for events. - Fl_PNM_Image now supports the XV/GIMP thumbnail format (P7). - Fl_Preferences would not find groups inside the root group. - Small bug fixes for Fl_Chart, Fl_Scrollbar, Fl_Tabs, and FLUID from Matthew Morrise. - Fl_Chart didn't have its own destructor, so data in the chart wasn't freed. - Fl_Menu_Button no longer responds to focus or keyboard events when box() is FL_NO_BOX. - FLTK convenience dialogs put the buttons in the wrong order. - Fl_BMP_Image didn't load 4-bit BMP files properly. - Minor tweeks to the WIN32 DLL support. - Fl_Text_Display::resize() could go into an infinite loop if the buffer is emptied. - Fl::handle() didn't pass FL_RELEASE events to the grab() widget if pushed() was set (for proper menu handling...) - DND events were being sent to the target window instead of the target widget under WIN32. - The newest Cygwin needs the same scandir() handling as HP-UX. - FLUID didn't register the image formats in the fltk_images library, and had some other image management problems. - Fixed one more redraw bug in Fl_Browser_ where we weren't using the box function to erase empty space in the list. - Fl_Text_Display::buffer() now calls resize() to show the buffer. - Fl_Help_View didn't support HTML comments. - Fl_Help_View didn't include the extra cellpadding when handling colspan attributes in cells. - Fl_Help_View didn't support table alignment. CHANGES IN FLTK 1.1.0rc6 - Documentation updates. - Fl::handle() didn't apply the modal tests for FL_RELEASE events, which caused Fl_Tabs to allow users to change tabs even when a modal window was open. - Fl_Browser_, Fl_Input_, Fl_Slider now use the box function to erase the background. This fixes some long-standing redraw problems. - More snprintf/strlcpy/strlcat changes where needed. - Fl::get_font_name() would leak 128 bytes. - Eliminated most of the "shadowed" variables to avoid potential problems with using the wrong copy of "foo" in a class method. - Moved Fl_BMP_Image, Fl_GIF_Image, and Fl_PNM_Image to the fltk_images library, so the only image formats that are supported by the core library are XBM and XPM files. This reduces the size of the FLTK core library by about 16k... - The Fl_Text_Display::resize() method was incorrectly flagged as protected. - Fixed some memory/initialization bugs in Fl_File_Chooser that valgrind caught. - The PNG library png_read_destroy() is deprecated and does not free all of the memory allocated by png_create_read_struct(). This caused a memory leak in FLTK apps that loaded PNG images. - Added uncache() method to Fl_Image and friends. - Added image() methods to Fl_Menu_Item. - Added default_cursor() method and data to Fl_Window. - Fl_Group would send FL_ENTER events before FL_LEAVE events, causing problems with adjacent widgets. - Fixed filename problems with Fl_File_Chooser - changing the filename field directly or choosing files from the root directory could yield interesting filenames. - Fl_Input_ could crash if it received an empty paste event. - The mouse pointer now changes to the I beam (FL_CURSOR_INSERT) when moved over an input field or text widget. - "make install" didn't automatically (re)compile the FLUID executable. - Added an Fl::get_boxtype() method to get the current drawing function for a specific box type. - Fl_Output and Fl_Multiline_Output didn't prevent middle-mouse pastes. - Fl_JPEG_Image didn't compile out-of-the-box with Cygwin due to a bug in the Cygwin JPEG library headers. - Fl_BMP_Image still didn't work with some old BMP files. - "make distclean" didn't really clean out everything. - Tweeked the look of the check button with a patch from Albrecht Schlosser. CHANGES IN FLTK 1.1.0rc5 - Added "wrap" type bit to Fl_Input_, so you can now have a multiline text field that wraps text. - Setting the value() of an output text field no longer selects the text in it. - Output text fields now show a caret for the cursor instead of the vertical bar. - The newButton and previewButton widgets are now public members of the Fl_File_Chooser class. This allows developers to disable or hide the "new directory" and "preview" buttons as desired. - Added new visible focus flag bit and methods to Fl_Widget, so it is now possible to do both global and per-widget keyboard focus control. - Removed extra 3 pixel border around input fields. - No longer quote characters from 0x80 to 0x9f in input fields. - Improved speed of Fl_Browser_::display() method with large lists (patch from Stephen Davies.) - Fl_Help_View didn't properly handle NULL from the link callback (the original filename/directory name were not preserved...) - Fl_Help_View didn't use the boxtype border values when clipping the page that was displayed. - Added first steps to CodeWarrior/OS_X support (see fltk-1.1.x/CodeWarrior/OS_X.sit) - Cleaned up the WIN32 export definitions for some of the widget classes. - Fixed a filename completion bug when changing directories. - Fl_File_Chooser::value() would return directories with a trailing slash, but would not accept a directory without a trailing slash. - When installing shared libraries, FLUID is now linked against the shared libraries. - MacOS: missing compile rule for .dylib files. - Fl_Group::current(), Fl_Group::begin(), and Fl_Group::end() are no longer inlined so that they are properly exported in DLLs under WIN32. Similar changes for all static inline methods in other classes. - MacOS: support for Mac system menu (Fl_Sys_Menu_Bar) - MacOS: wait(0) would not handle all pending events - Added new makeinclude file for MingW using GCC 3.1.x. - Fl_Choice::value(n) didn't range check "n". - The MingW and OS/2 makeinclude files didn't have the new fltk_images library definitions. - Fl_Text_Editor didn't scroll the text in the widget when dragging text. - Config header file changes for Borland C++. - FLTK didn't provide a Fl::remove_handler() method. CHANGES IN FLTK 1.1.0rc4 - Added new filter_value() methods to Fl_File_Chooser to get and set the current file filters. - Added support for custom filters to Fl_File_Chooser. - Added Borland C++ Builder IDE project files from Alexey Parshin. - Resource leak fixes under WIN32 from Ori Berger. - Now register a WIN32 message for thread messages. - Fl_Window didn't initialize the min and max window size fields. - The JPEG and PNG image classes have been moved to the fltk_images library, a la FLTK 2.0. You can register all image file formats provided in fltk_images using the new fl_register_images() function. - Fl_XBM_Image didn't correctly load XBM files. - MacOS: Added Greg Ercolano's file descriptor support. - MacOS: Fixed text width bug. - A change in fl_fix_focus() broken click-focus in FLWM. - Cygwin with -mnocygwin didn't like the FL/math.h header file. - Fl_Browser_ cleared the click count unnecessarily. - MacOS: Pixmap draw fix, gl_font implemented FL_FOCUS fix, window type fix for modal and nonmodal windows, glut uninitialised 'display' proc fix - Now support FLTK_1_0_COMPAT symbol to define compatibility macros for the old FLTK 1.0.x function names to the 1.1.x names. - Now translate the window coordinates when a window is shown, moved, or resized. This should fix the "menus showing up at the wrong position" bug under XFree86. - Fixed some more problems with the Fl_BMP_Image file loader. - BC++ fixes. - The pixmap_browser demo didn't check for a NULL image pointer. - Fl_File_Icon::find() now uses fl_filename_isdir() under WIN32 to check for directories. - Fl_File_Chooser's preview code called refcount() on the deleted image's object. - Fixed another problem with the Fl_BMP_Image loader. - The fl_file_chooser() callback was being called with a NULL filename. - Documented that fl_push_clip() is preferred over fl_clip(), with a corresponding source change. - Minor changes to the MacOS X event handling code. - Added syntax highlighting example code to the editor test program. - Fl_Text_Display didn't range check style buffer values. - Added "dark" color constants (FL_DARK_RED, etc.) - The MacOS font code was missing definitions for fl_font_ and fl_size_. CHANGES IN FLTK 1.1.0rc3 - Documentation updates. - New file chooser from design contest. - Did some testing with Valgrind and fixed some memory problems in Fl_Help_View::Fl_HelpView, Fl_Menu_::remove(), Fl_Text_Display::draw_vline(), and resizeform() (convenience dialogs). - Fixed some redraw() bugs, and now redraw portions of the parent widget when the label appears outside the widget. - The boolean (char) value methods in Fl_Preferences have been removed since some C++ compilers can't handle char and int value methods with the same name. - Added fl_read_image() function. - Fixed Fl_Valuator::format() so that the correct format type is used when step == 1.0. - Fl_Help_View didn't support the TT markup. - Fl_Shared_Image used a double-pointer to the image handler functions, which was unnecessary and unintuitive. - Fl_PNM_Image didn't load the height of the image properly. - Fl_BMP_Image, Fl_JPEG_Image, Fl_PNG_Image, and Fl_Shared_Image didn't delete image data that was allocated. - Enabled the OpenGL and threads demos when compiling for MingW. - Fl_File_Input didn't update the directory buttons if a callback was registered with the widget. - The file chooser would return the last selected file(s) when cancel was pressed. - The file chooser limited the resizing of the chooser window unnecessarily. - Fixed WM_PAINT handling under WIN32. - Minor tweeks to MingW and OS/2 config headers. - Fl_Value_Input now correctly determines if step() specifies an integer value. - Fl_Help_View didn't add links inside PRE elements. - OS/2 build fixes from Alexander Mai. - Now use strlcat() instead of strncat() which could cause buffer overflows. - Now use of strlcpy() instead of strncpy() to simplify the code. - Drag-n-drop under WIN32 now shows a [+] cursor instead of the link cursor. - Fixed widget width tooltip and default argument handling code in FLUID. - Fixed colors used when drawing antialiased text using Xft. - Fl_Preferences::makePath() now uses access() instead of stat() when checking to see if the destination directory already exists. - Fl_BMP_Image now supports older BMP files with the 12 byte header. - Optimized the redrawing of tabs and radio/check buttons when the keyboard focus changes. - More tooltip fixes. - DND text operations would loop under X11. CHANGES IN FLTK 1.1.0rc2 - Portability fixes. - Backported 2.0 tooltip changes. - Several of the valuators did not support tooltips. - The last menu item in a menu didn't pick up on font changes. - FLUID now properly handles default argument parameters properly. - Fixed WM_PAINT handling under WIN32 - didn't validate the correct region that was drawn. - Fl_Multiline_Output would insert the enter key. - Fl_File_Browser didn't clip items to the column width. - Fl_Window::draw() cleared the window label but didn't restore it, so windows could lose their titles. - Eliminated multiple definitions of dirent structure when compiling under WIN32. - Adjusted the size of the circle that is drawn inside radio buttons to scale better for larger labels. - FLUID was opening the display when it shouldn't have. - Fl_File_Chooser.cxx defined the file chooser functions again; they should only be defined in the header file. - Wide arcs would draw with "teeth". - The preferences demo included Fl/Fl_Preferences.H instead of FL/Fl_Preferences.H. CHANGES IN FLTK 1.1.0rc1 - The fl_file_chooser() and fl_dir_chooser() functions now support an optional "relative" argument to get relative pathnames; the default is to return absolute pathnames. - The backspace and delete keys now work as expected in the file chooser when doing filename completion. - FLUID now supports running shell commands. - New Fl_File_Input widget that shows directory separators with filename in input field. - The Fl_File_Chooser dialog now shows the absolute path in the filename field using the Fl_File_Input widget. - FLUID now keeps track of grid, tooltip, and other GUI options, along with the last 10 files opened. - Tooltip windows would show up in the task bar under WIN32. - Now append trailing slash to directory names in names in WIN32 version of scandir(). This takes care of a file chooser performance problem with large directories. - Added Fl_Preferences class from Matthias Melcher, including binary data support. - FLUID now recognizes the "using" keyword in declarations. - fl_file_chooser() didn't highlight the requested file the second time the file chooser dialog was shown. - Fixed rendering of Fl_Light_Button with the plastic scheme. - Fixed a bug in the MacOS font enumeration code. - Now show a "locked" icon next to static/private elements in FLUID, and "unlocked" icon next to global/public elements. - Implemented Fl_Menu_Item image labels using older 1.0.x labeltype method. - Updated the PNG library check to support both png.h and libpng/png.h. - Fixed a recursion bug in tooltips that was causing random crashes. - fl_file_chooser() could cause a segfault when passed a NULL filename parameter in some situations. - Added a "-g" option to fltk-config to support quick compiling with debugging enabled. - Fixed redraw problem with Fl_Input and anti-aliased text. - Added threading support for MacOS X and Darwin. - The filesystem list in the file chooser now works under MacOS X and Darwin. - The fl_msg structure now contains all data passed to the WndProc function under WIN32. - Fixed some window focus/positioning problems under MacOS X. - Added fl_create_alphamask() function to create an alpha mask from 8-bit data; currently this always generates a 1-bit screen-door bitmask, however in the future it will allow us to generate N-bit masks as needed by various OS's. - Fl_File_Browser::load() didn't properly show drives when compiled in Cygwin mode. - Now pass correctly pass keyboard and mouse events to widget under tooltip as needed... - Added new Fl::dnd_text_ops() methods to enable/disable drag-and-drop text operations. - Fl_Input now supports clicking inside a selection to set the new text position when drag-and-drop is enabled. - Added support of X resources for scheme, dnd_text_ops, tooltips, and visible_focus... - Fixed some case problems in includes for the MacOS X code. - Fl_Widget::handle() returned 1 for FL_ENTER and FL_LEAVE events, which caused some compatibility problems with 1.0 code. - Fl_Box::handle() now returns 1 for FL_ENTER and FL_LEAVE events so that tooltips will work with Fl_Box widgets. - Some source files still defined strcasecmp and strncasecmp under WIN32. - Some source files still used the "false" and "true" C++ keywords, even though several of our "supported" C++ compilers don't support them. Using 0 and 1 until FLTK 2.0 (which uses the bool type instead of int for any boolean values...) - Minor Fl_Color revamping, so that color constants map to the color cube and FL_FOREGROUND_COLOR, FL_BACKGROUND_COLOR, FL_BACKGROUND2_COLOR, FL_INACTIVE_COLOR, and FL_SELECTION_COLOR map to the user-defined colors. CHANGES IN FLTK 1.1.0b13 - Fixed a bug in the Xft support in Fl_Window::hide() (the config header wasn't included, so the Xft code wasn't getting called) - Xdbe support must now be enabled explicitly using --enable-xdbe due to inconsistent bugs in XFree86 and others. - Windows resized by a program would revert to their original size when moved under WIN32. - Cygwin can only compile the new WIN32 drag-n-drop code using GCC 3.x. - Tooltips now appear for inactive and output widgets. - Tooltips no longer steal keyboard events other than ESCape. - Tooltips are no longer delayed when moving between adjacent widgets. - fl_beep(FL_BEEP_DEFAULT) now uses the PC speaker under Windows (0xFFFFFFFF) rather than an event sound. - The configure script didn't include the -mwindows or -DWIN32 compiler options in the output of fltk-config when using the Cygwin tools. - Fl_Output didn't take input focus when needed, so it was unable to support CTRL-C for copying text in the field and did not unhighlight selections when the widget lost focus. - The fl_filename_name() function didn't handle a NULL input string. - The input field used by the fl_input() and fl_password() functions was resized too small in 1.1.0b12. - Added casts in fl_set_fonts_win32.cxx for VC++ 5.0. - Fl_File_Icon::find() did not check the basename of a filename for a match; this caused matches for a specific filename (e.g. "fluid") to fail. - The Fl_Shared_Image class now supports additional image handling functions - this allows you to support additional image file formats transparently. CHANGES IN FLTK 1.1.0b12 - Documentation updates. - Fl_Choice didn't clip the current value properly - it wasn't accounting for the box border width. - The forms compatibility functions are now placed in a "fltk_forms" library to match FLTK 2.0. - Renamed down() and frame() to fl_down() and fl_frame(), filename_xyz() to fl_filename_xyz(), and all of the define_FL_FOO() functions for the custom boxtypes to fl_define_FL_FOO() to avoid namespace clashes. - Stereo OpenGL support (patch from Stuart Levy) - All of the convenience functions defined in fl_ask.H now resize the widgets and dialog window as needed for the labels and prompt. - Backported FLTK 2.0 dual cut/paste buffer code. - Added support for Xft library to provide anti-aliased text on X11. - Fl_Help_View didn't keep track of the background color of cells properly. - Fl_Browser::item_width() didn't compute the width of the item properly when column_widths() was set. - Fl_Button didn't check to see if the widget could accept focus before taking input focus. - Fl_Help_View didn't preserve target names (e.g. "filename.html#target") when following links. - Drag-and-drop support for MacOS. - Updated MacOS issues documentation. CHANGES IN FLTK 1.1.0b11 - Now conditionally use the WIN32 TrackMouseEvent API (default is no...) - Fixed a table rendering bug in the Fl_Help_View widget. - The fltk-config script now recognizes all common C++ extensions. - The menu code was using overlay visuals when the scheme was set to "plastic". - Fixed some drawing problems with Fl_Light_Button and its subclasses. - Fixed a minor event propagation bug in Fl_Group that caused mousewheel events to be passed to scrollbars that were not visible. - The fl_file_chooser() function did not preserve the old file/directory like the old file chooser did. - The prototypes for fl_input() and fl_password() did not default the "default value" to NULL. - Fl_Tabs now draws tabs using the selection_color() of the child groups; this allows the tabs to be colored separately from the body. Selected tabs are a mix of the Fl_Tabs selection_color() and the child group's selection_color(). - Fl_Tabs didn't include images in the measurement of the tabs if no label text was defined. - The WIN32 code didn't return 0 from the window procedure after handling WM_PAINT messages. - fl_draw() would incorrectly test the clipping of labels the lay outside the bounding box. - filename_relative() didn't always return the correct relative path. - Updated the test makefile to work with more versions of "make". - Added new "--with-optim" configure option to set the optimization flags to use when compiling FLTK. - The fltk-config script no longer reports the optimization flags that were used to compile FLTK. - Initial port of FLTK 2.0 drag-and-drop support. CHANGES IN FLTK 1.1.0b10 - Fixed the new WIN32 TrackMouseEvent code. - Fixed the VC++ project files to link against comctl32.lib. CHANGES IN FLTK 1.1.0b9 - Better FL_LEAVE event handling for WIN32. - The alpha mask was bit-reversed. - Fl::scheme() applied the scheme tile image to overlay and menu windows, which caused problems when the overlay planes were in use. - Fixed Fl::event_button() value when hiding tooltip on some systems. - Added Fl_BMP_Image class to support loading of Windows bitmap (BMP) files. - The shiny demo didn't work on some systems (no single-buffered OpenGL visual), and the new box types were reset when show(argc, argv) was called. - Fl::scheme() didn't update windows that were not shown. - The fractals demo would get far ahead of the UI with some Linux OpenGL drivers. Now use glFinish() instead of glFlush() so we are at most 1 frame ahead. - The fractals demo Y axis controls were backwards for the "flying" mode. - MacOS: cleaned up src/Fl_mac.cxx - MacOS: fixed Fl::wait(0.0), fixed Cmd-Q handling - Update CygWin support for Fl::add_fd(). - Update the plastic scheme to not override the default colors - move the color code to the MacOS-specific code. Also updates the tile image colormap to match the current background color. - Add fl_parse_color() to X11 as well, removing a bunch of conditional code and providing a common interface for looking up color values. - Fixed the make problems in the test directory - some make programs had trouble handling the recursive dependencies on the FLUID files... - Now use rint() to round floating-point coordinates. - Demo cleanup - made sure they all worked with schemes. - Fl_Tabs no longer clears the unused area of the tab bar. - Added show(argc, argv) method to Fl_Help_Dialog. - MacOS: implemented cut/copy/paste. - MacOS: improved keyboard handling, fixed keyboard focus handling, fixed get_key, modified 'keyboard' demo to show second mouse wheel and additional keys 'help' and FL_NK+'=' CHANGES IN FLTK 1.1.0b8 - OS/2 build fixes. - fl_draw() didn't ignore symbol escapes properly for the browsers... - New Fl::scheme() methods from FLTK 2.0; currently only the standard ("") and plastic ("plastic") methods are supported. Schemes can be set on the command-line ("-scheme plastic") or using the FLTK_SCHEME environment variable. - MacOS: fixed iBook keyboard handling, moved remaining message handling to Carbon, added mouse capture support, added timer support, added overlay support, fixed double-buffering side effects. - The configure script wasn't using the -fpermissive or -fno-exceptions options with GCC. - Fl_JPEG_Image and friends didn't set the depth if the image file couldn't be loaded; since Fl_RGB_Image didn't check for this, it could fail when displaying or copying these images. - filename_absolute() did not always free its temporary buffer. - filename_relative() did not do a case-insensitive comparison under MacOS, OS/2, and Windows. - filename_isdir() didn't properly handle "D:L" under WIN32. - Fl_Shared_Image::get() did not check to see if the image could not be loaded. - Fl_Help_View didn't clear the line array in the Fl_Help_Block structure; this causes erratic formatting for some pages. - The font and size members of Fl_Help_Block were never used. - The threading functions (Fl::lock() and friends) were not exported under WIN32. - The Fl_Text_Display destructor deleted the scrollbars twice... - Fl_Help_View didn't reset the horizontal scroll position when showing a new page. - Fl_Pack now allows any child widget to be the resizable() widget, not just the last one. - MacOS: opaque window resizing, all events except Mac menus are now handled using Carbon, window activation fixed, GL_SWAP_TYPE default changed to make gl_overlay work. - Fl_Help_View::resize() didn't resize the horizontal scrollbar. - MacOS: list all fonts, fixed clipping and mouse pointer bugs. - The Fl_File_Chooser widget now uses hotspot() to position the dialog under the mouse pointer prior to showing it. - Added a configure check for *BSD - use -pthread option instead of -lpthread. - Fl_Text_Display could get in an infinite loop when redrawing a portion of the screen. Added a check for the return value from fl_clip_box() so that the correct bounding box is used. - Removed the Fl_Mutex and Fl_Signal_Mutex classes from the threads example, since they weren't being used and apparently are not very portable. - Fl_Help_View now ignores links when the link callback returns NULL, and displays a sensible error message when an unhandled URI scheme is used (e.g. http:, ftp:) - Fl_File_Icon::load_system_icons() no longer complains about missing icon files, just files that exist but can't be loaded. - FLUID didn't list the plastic box and frame types. - Now hide the tooltip window whenever a window is hidden. Otherwise a tooltip window could keep an application running. - Updated FLUID to only append a trailing semicolon to code lines in a callback (so "#include" and friends will work...) - The Fl_Color_Chooser widget now supports keyboard navigation. - Fixed button and valuator widgets to call Fl::focus() instead of take_focus(). - Tweeked the radio button drawing code for better circles with different boxtypes. - The Fl_File_Chooser widget did not provide a shown() method, and fl_file_chooser() and fl_dir_chooser() did not wait on shown(); this would cause them to return prematurely if you switched desktops/workspaces. - Cosmetic changes to plastic boxtypes. Now look much better for large areas and the buttons now have a much greater "3D" feeling to them. - Added new Fl::draw_box_active() method so that boxtypes can find out if the widget they are drawing for is active or not. - Fl_Button and its subclasses did not redraw the parent when the boxtype was FL_NO_BOX and they lost keyboard focus (the parent redraw clears the focus box.) - Fixed the example program makefile - wasn't building the mandelbrot and shiny demos right. - Fl::set_font(Fl_Font, Fl_Font) was not implemented. - Fixed the documentation Makefile commands; was not using the fltk.book file for some reason... CHANGES IN FLTK 1.1.0b7 - More documentation updates... - Mac OS X support works 95% - The Fl_Window::hotspot() off-screen avoidance code was commented out. - Mac OS X uses mostly Carbon event handling to support Mousewheel, three buttons, all modifier keys, etc. - Updated paragraph 4 of the FLTK license exceptions; there was some question about the requirement to show that a program uses FLTK, which is required by section 6 of the LGPL. The new exemption specifies that inclusion of the FLTK license is not required, just a statement that the program uses FLTK. - Fl_Button::handle() was calling take_focus() for both FL_PUSH and FL_DRAG. - File and memory fixes for Fl_GIF_Image, Fl_PNG_Image, Fl_PNM_Image, Fl_Shared_Image, Fl_Tiled_Image, and Fl_XBM_Image. - filename_match() didn't handle backslashes properly under WIN32, and didn't use a case-insensitive comparison under MacOS X. - The Fl class was missing access methods for the FL_MOUSEWHEEL event values - Fl::event_dx() and Fl::event_dy(). - The default help string didn't include the -nokbd option. - "make uninstall" didn't uninstall the static OpenGL widget library. - Mac cursor shapes added... - Fl_Text_Display would lockup when all text was deleted; for example, when running the editor demo, you couldn't load a second file. - Added Fl::lock() and friends from FLTK 2.0 to support multi-threaded applications; see the "threads" demo for an example of this. - Fl_Check_Button and Fl_Round_Button now use the FL_NO_BOX box type to show the background of the parent widget. - Tweeked the plastic boxtype code to draw with the right shading for narrow, but horizontal buttons. - Fl_Progress now shades the bounding box instead of drawing a polygon inside it. - Fl::warning() under WIN32 defaults to no action. This avoids warning dialogs when an image file cannot be loaded. - Some Win32 drivers would draw into wrong buffers after OpenGL mode change - The file chooser would cause a segfault if you clicked in an empty area of the file list. - Fl_File_Icon::labeltype() would cause a segfault if the value pointer was NULL. - Fl_File_Icon::load_image() could cause segfaults (NULL data and incrementing the data pointer too often.) - Fl_File_Icon::load_image() now handles 2-byte per color XPM files. - Some Win32 drivers would draw into wrong buffers after OpenGL mode change. - Message handling and Resources for MacOS port. - Fl_Help_View could get in an infinitely loop when determining the maximum width of the page; this was due to a bug in the get_length() method with percentages (100% width would cause the bug.) - Don't need -lgdi32 for CygWin, since -mwindows does this for us. - The WIN32 event handler did not properly handle WM_SYNCPAINT messages. - Fl_Tabs now uses the boxtype exclusively to draw both the tabs and surrounding box, so alternate box types actually work and the look is a little nicer. - Fixed the drawing of large areas with the new plastic boxtypes. - Updated the Visual C++ demo projects to use FLUID to generate the GUI files as needed. - The demo program didn't load the right menu file when compiled for debugging under WIN32. - Added plastic box types to forms demo. - Added mousewheel to keyboard demo. - The Fl_Text_Editor widget caused an infinite loop when it received keyboard focus. - filename_isdir() didn't properly handle drive letters properly; WIN32 needs a trailing slash for drive letters by themselves, but cannot have a trailing slash for directory names, go figure... - The Fl_Text_Buffer and Fl_Text_Display classes did not initialize all of their members. - fl_normal_label() had a totally redundant set of if/else tests, which the new code handles all from fl_draw(). - The Fl_File_Chooser dialog contained two hotspots. - The fl_draw_pixmap() function didn't free the 2-byte color lookup table properly (delete instead of delete[]). - fl_draw() reset the text color under WIN32, causing bitmaps to draw incorrectly. - Fl::get_font_sizes() is now implemented under WIN32. - Fl_Text_Display now uses the same default colors for selection and text as Fl_Input_ and friends. - Changed the default line scrolling in Fl_Text_Display to 3 lines for the mouse wheel and scrollbar arrows. CHANGES IN FLTK 1.1.0b6 - Documentation updates... - The configure script now works within the CygWin environment. - Tooltips are now enabled by default, but are not re-enabled when calling the Fl_Widget::tooltip() method. - Added new Fl::version() method to get the current FLTK library version (for shared libraries/DLLs) - Added new Fl::event() method to get the current event that is being processed. - Added new fl_beep() function to do audible notifications of various types. - Added new Fl_GIF_Image, Fl_JPEG_Image, Fl_PNG_Image, Fl_PNM_Image, Fl_XBM_Image, and Fl_XPM_Image classes. - Added new Fl_Shared_Image class, a la FLTK 2.0. - Added new Fl_Tiled_Image class for tiled backgrounds. - Added new copy(), desaturate(), inactive(), and color_average() methods to the Fl_Image classes. - Added a horizontal scrollbar to the Fl_Help_View widget. - Added new FL_PLASTIC_{UP/DOWN}_{BOX/FRAME} boxtypes for a more "modern" look (sort of a cross between KDE 2.2 and Aqua.) - Fl_Float_Input and Fl_Int_Input no longer accept pasted text that is not a floating point or integer value. Pasted numbers now replace text in these widgets. - Implemented the Fl_File_Icon::load_png() method. - The Fl_File_Icon::load_system_icons() method now supports KDE 2.x icons. - Fixed PNG support in Fl_Help_View. - Removed the "Microsoft" mode button from the menubar demo. - The browser demo now makes sure that the input field contains a number. - The Fl_Browser::make_visible() method now range checks the input. - Updated the fl_draw() and fl_measure() methods to accept an optional draw_symbols argument, which controls whether symbols are drawn in the text. - Added new Fl::visible_focus() methods to control whether the focus box is drawn. - The focus box is now drawn using the contrast color. - Fl_Repeat_Button didn't accept keyboard focus. - Added new Fl::visible_focus() method and standard "-kbd" and "-nokbd" options in Fl::args() processing to control whether keyboard focus is shown and handled by non-text widgets. - The wrong tooltip could be shown if the user moved the mouse over adjacent widgets with tooltips. - The drop-down button on Fl_Choice widgets was not limited in width. - Tooltips could appear off the screen. - Mouse wheel events are now sent to the focus widget first, then to any other interested widget. - The Fl_RGB_Image class now supports images with an alpha channel. Images are currently drawn using "screen door" transparency... See the "image" demo for an example. - Added new fl_create_bitmask() and fl_delete_bitmask() functions that create bitmap objects for masking and bitmap drawing. - Was sending FL_RELEASE events for buttons 4 and 5 under X11, which are only for FL_MOUSEWHEEL. - Fl_Help_View now supports the EM and STRONG elements. - Didn't do callbacks when changing tabs via keyboard. - FLUID didn't write tooltip strings to the message catalog file. - Fl_File_Icon now uses Fl_Shared_Image to load icon images; the load_png() and load_xpm() methods have been replaced by a single load_image() method. - Fl_File_Icon::load_system_icons() now does a better job of finding KDE icons. - Now use Fl::warning() and Fl::error() in place of printf's in some of the newer widgets. - The default behavior of Fl::error() is now to display an error but not to exit; Fl::fatal() still exits. - FLUID now uses the Fl_Shared_Image class, so FLUID- generated GUIs can embed any of the supported image file formats. - New filename_relative() function to convert an absolute filename to a relative one. - Updated the filename_absolute(), filename_expand(), and filename_setext() functions to take the destination string size, with inline functions for the old FL_PATH_MAX size. - fl_file_chooser() and fl_dir_chooser() now return a relative path. - Fl_Help_View now supports all ampersand escapes. CHANGES IN FLTK 1.1.0b5 **** NOTE: DUE TO CHANGES IN THE WIDGET CLASSES, **** **** YOU MUST RECOMPILE ALL SOURCE FILES **** **** THAT USE FLTK!!! **** - All FLTK color values are now 32-bits and support both the legacy 8-bit color values as well as 24-bit RGB values (0xRRGGBB00 for 24-bit RGB, 0x000000II for indexed color). - Fl::set_boxtype() and fl_internal_boxtype() now keep track of when a boxtype is changed; this allows you to override the "special" boxtypes without references to those boxtypes causing them to be reset. - Fl_Help_Func now takes a Fl_Widget pointer as well as a pathname. - Added code to support FL_KEYUP events. - Focus did not return to the Fl_Text_Display and Editor widgets when scrolling and then clicking inside the editor window. - Now set the line size of the vertical scrollbar in the text editor to 1. - The symbols demo didn't show the strings needed to show the corresponding symbol (the label string was not quoted...) - FLTK should now compile with Cygwin cleanly. - Shortcut changes were not being saved by FLUID. - FLUID didn't write the deimage() static data. CHANGES IN FLTK 1.1.0b4 **** NOTE: DUE TO CHANGES IN THE FL_WIDGET CLASS, **** **** YOU MUST RECOMPILE ALL SOURCE FILES **** **** THAT USE FLTK!!! **** - Updated the flags_ member of Fl_Widget to be an integer instead of uchar, to support the new FL_OVERRIDE flag for Fl_Window. - The parent() method of Fl_Widget now uses pointers to Fl_Group instead of Fl_Widget. - Fl_Window now provides the FLTK 2.0 "override()" and "set_override()" methods for windows. - Added a configure check (and warning) for GCC 3.0.x. - Updated the configure script to check for the png_set_tRNS_to_alpha() function. - Updated the config.h files for all platforms for the image and FLTK documentation defines. - Updated the makeinclude files for all platforms to match the current makeinclude.in file. - FLUID would crash if you cleared an image for a widget. - Fl_Help_View::add_image() did not initialize the image member of the base (unscaled) image. - Fl_Help_View didn't support A elements with both a NAME and HREF attribute - the HREF was ignored. - Miscellaneous compile warning fixes. - Tooltips were being reset by Fl::belowmouse(), which caused problems with the FLUID main window (flashing tooltip windows and serious problems with KDE 2.2) - The editor demo had the save and discard button actions reversed. - The Fl_Help_View widget now uses png_destroy_read_struct() if the older png_read_destroy() function is not available. - The WIN32 DLL library now includes the OpenGL widgets. This is a simpler solution for the export/import dillemma under WIN32, as OpenGL and non-OpenGL symbols need to be exported at different times with the separate library scheme. Since OpenGL is standard under Windows, this is less of a problem than under UNIX... CHANGES IN FLTK 1.1.0b3 - The top-level makefile did not include the makeinclude file, causing the fltk-config installation commands to fail. - The fl_file_chooser.cxx source file conflicted with Fl_File_Chooser.cxx under Windows. Similarly, the fl_file_chooser.H header file conflicts with the Fl_File_Chooser.H header file. - Now save and restore the GDI pen object when responding to WIN32 paint messages. - Documentation updates from A. Suatoni. CHANGES IN FLTK 1.1.0b2 - New fltk-config script. - Fixed image/text label handling; in b1 the label needed a non-blank text string to display the image. This bug also caused all sorts of crashes and display problems. - Added new filetype() method to Fl_FileBrowser to allow for file or directory browsing. - Fixed the drawing of the focus box around Fl_Return_Button. - Fixed menu item measurement bug (wasn't initializing image pointers to 0...) - Radio and checkbox menu items now draw with the new style (round radio buttons with dots and square check buttons with check marks.) - Improved the appearance of Fl_Check_Button. - Improved the Fl_HelpView table formatting code; now dynamically sizes the table columns, and supports COLSPAN. - The FLUID keyboard shortcuts now work as expected (CTRL-C copies, SHIFT-CTRL-C writes code, etc.) - The FLTK_DOCDIR environment variable can now be used to tell FLUID where to find the on-line documentation files. - FLUID now supports image labels in addition to text labels + text over image alignment. - FLUID now supports tooltips. - The widget panel in FLUID is now tabbed, a la FLTK 2.0. - The FLUID pixmap destructor tried to free 1 too many lines of image data. - FLUID now provides on-line help. - Changed Fl_FileXYZ to Fl_File_XYZ. - Changed Fl_HelpXYZ to Fl_Help_XYZ. - Tooltip fixes for Fl_Browser_, Fl_Choice, and Fl_Input_. - Added tooltips to FLUID, help dialog, and file chooser. - Now load system icons in FLUID. CHANGES IN FLTK 1.1.0b1 - Added new image() and deimage() methods to support image + text labels more easily. - Added new alignment bit FL_ALIGN_TEXT_OVER_IMAGE. - Added tooltip support using Jacques Tremblay's tooltip patch. - Added keyboard navigation to all widgets. - Added support for mouse wheels using the new FL_MOUSEWHEEL event type. Get the mouse wheel movement values from Fl::e_dx (horizontal) and Fl::e_dy (vertical). - Added the Fl_Check_Browser, Fl_FileBrowser, Fl_FileChooser, Fl_FileIcon, Fl_HelpDialog, Fl_HelpView, Fl_Progress, and Fl_Wizard widgets from the bazaar. - Added 2.0 Fl_Text_Display and Fl_Text_Editor widgets based on NEdit. - The Fl_Choice widget now looks more line a combo box than a Motif option menu. - Moved the OpenGL widgets into a separate library called fltkgl - this eliminates shared library dependencies on OpenGL when no OpenGL functionality is used/required. - FLUID now supports the new Fl_CheckBrowser, Fl_FileBrowser, Fl_FileIcon, Fl_HelpView, Fl_Text_Display, Fl_Text_Editor, and Fl_Wizard widgets. - Updated configure stuff to support shared libraries under AIX (link to -lfltk_s) - Symbol labels can now contain regular text. - FLUID now supports relative filenames for the source and header files you generate. - Fl_Menu_Item::add() didn't use the flags that were passed in. - Fixed a bug in Fl_Scrollbar - clicking in the "trough" of the scrollbar would move the scroller in the wrong direction. - Made the Forms pixmap parameter const to match the Fl_Pixmap.H definitions. - Changed the Fl_Pixmap constructor to use the explicit keyword which should work for all C++ compilers. - Fl_Menu_add of a menu item with the same name as an existing submenu title would mess up by replacing that menu title, it now adds a new item. - Fl_Menu::add() of text starting with '/' to a menu is assummed to be a filename. So "/foo/bar" creates a single menu item. You can also put filenames into submenus by doing "submenu//foo/bar", this will create a submenu called "submenu" with an item "/foo/bar". Menu items starting with "\_" will insert an item starting with '_' rather than a divider line. These changes make the menus compatable with fltk 2.0. - Another little fix for the BoXX OpenGL overlays. - Fl_Gl_Window no longer blanks the mouse pointer on WIN32 unless an OpenGL overlay is being used. This should make non-overlay displays faster when a cursor is set. CHANGES SINCE FLTK 1.0.10 - CHANGED THE DEFAULT RUN-TIME LINKING TO "MULTITHREADED DLL". You'll need to change your project settings to use this as well or you'll get errors. - Added new --disable-gl option to configure script. - Added new const const pointer versions of pixmap functions to eliminate an annoying pointer warning message that was generated by the Sun and other C++ compilers. - Eliminated all "var hides class::var" warnings. - Eliminated all "string literal converted to char *" warnings. - OS/2 updates from Alexander Mai. - Tidied up the HTML documentation to be more standards compliant. - Compiling with -DBOXX_BUGS will work around some problems with the newest X drivers that BoXX delivers, the problems all affect use of Overlays for normal X drawing and OpenGL drawing. Normal compilation is unchanged. - The file chooser buttons use user_data() rather than the label to decide what to do, allowing the label to be somewhat cleaner. - Selection color on X changed to blue, to match what happens on Windows now. - Added support for AIX (static library only). - Added support for SunOS 4.x - Now process WIN32 WM_ACTIVATEAPP message to reset the key and button states in Fl::e_state. - Fl_has_idle only tested N-1 callbacks and missed one. - Restored WM_SYNCPAINT handling under WIN32; this fixed a refresh bug under some versions of Windows. - Check for OpenGL headers before checking to see if OpenGL is supported. This should eliminate compile errors due to missing non-FLTK header files... - Add -D_INCLUDE_POSIX_SOURCE option when compiling with the HP compilers. - Replaced remaining _WIN32 symbols with WIN32 - Removed reference to unused GL/glu.h header file, which is missing on some Linux systems. - Fl_Gl_Window has a new method to allow you to get and set the context: void Fl_Gl_Window::context(void*, int destroy = 0) void* Fl_Gl_Window::context() const; Return or set a pointer to the GLContext that this window is using. This is a system-dependent structure, but it is portable to copy the context from one window to another. You can also set it to NULL, which will force FLTK to recreate the context the next time make_current() is called, this is useful for getting around bugs in OpenGL implementations. If destroy_flag is true the context will be destroyed by fltk when the window is destroyed, or when the mode() is changed, or the next time context(x) is called. - Some cleanup of Fl_Gl_Choice to move most of the system dependent #ifdefs into Fl_Gl_Choice.cxx. - Fl_Gl_Window does not set drawbuffer(BACKBUFFER) for single-buffered windows. - Fl_Input::replace(...) correctly updates the display if the replaced region does not include the mark, point, or selected region. - Added Fl::add_check(...), Fl::remove_check, and Fl::has_check. These are similar to idle callbacks but are only called just before it waits for new events. They can be used to watch for changes in global state and respond to them. - "accu-timer": some changes to repeat_timeout that seem to make it accurate on Unix and WIN32 at speeds up to 500000 timeouts/second (and 700000 on Linux), and within about .001% as accurate as the system clock. - Fix to Fl_Valuator::step() by Guillermo Andrade. - Fixed the FLUID write-menu bug introduced in 1.0.10 - Fl::flush() now calls GdiFlush() under WIN32 to ensure that all graphics are drawn. - fl_curve() now uses a much better algorithim to figure out how many pieces to cut the curve into. - FLUID now uses GetTempPath() under WIN32 to determine where to store the clipboard. - Right-ctrl does not delete selected text in Fl_Input, until you type a composed character. - Added simple FLTK and FLUID manual pages. - Fl_Gl_Window leaked memory under WIN32. - The colbrowser demo was missing an include file when compiled under OS/2. CHANGES SINCE FLTK 1.0.9 - Added a strcasecmp() function to FLUID; AIX doesn't have it. - Bug #115509: Fl_Scroll not repainting background. - Updated the configure script and makeinclude.in file to work with the Sun PRO compilers. - Disabled the WIN32 async socket select code by default: it doesn't seem to work anymore... - Fl::below_mouse() was incorrectly clearing e_is_click; this prevented any double-clicks from getting through... - No longer clear Fl::keysym on every event, this makes better back compatability and fixes Win2000 - FLUID now restores which tab in an Fl_Tabs was selected when loads .fl files. - Hack to fix the annoying "raise another application when a modal window is closed" problem on WIN32. - Fl_Tabs now draws the background behind the tabs. - Fl::set_fonts() on WIN32 fixed to work before the first window is shown. - CUA function keys, code submitted by George Yohng - Another attempt to get glut.h to work on WIN32. - Fl_Menu_::add() ignores '&' signs when comparing menu items, so you don't have to make the shortcuts the same all the time. - Fixed bit-flipping patterns in WIN32 bitmap code. - Fixed size of data written by gif images to .C files - Menu titles and buttons in the menubar can be images (allows it to be used as a toolbar) - Reads selectBackground from the xrdb database to set the selection color. Adding this to your .Xdefaults will make fltk and Motif programs look much more Windoze-like: *selectForeground: white *selectBackground: #000080 - FL_WHEN_RELEASE on Fl_Input will now do the callback when the input field is hidden, for instance when it is on a tab and the user switches to another tab. - Fl_Gl_Window with an overlay on X always resized any child windows even if you turned resizable() off because it turned it back on to resize the overlay window. This patch avoids changing resizable(). - Fix so multiple Fl::add_idle() calls works - The input focus got messed up if you called Fl_Tabs::value(x) and there was something that took focus on an earlier tab. - Removed some (not all) of the warnings when compiled with -Wwrite-strings, this should also get similar warnings Solaris produces. - Made Fl_Browser not hide the Fl_Widget::show() method - Changes & additions for OS/2 from Alexander Mai - Patch from Mike Lindner to make the turning on/off of scrollbars on Fl_Scroll smarter. - Added missing FL_EXPORT for Fl_Valuator::format() - Shortcuts for "buttons" in a Fl_Menu_Bar work again. - Fix for cut/paste support and Xdnd. - Shortcuts for submenu titles in a menubar pop up the submenu (rather than calling the callback) - Added documentation for GL_SWAP_TYPE - Buttons with box(FL_NO_BOX) did not draw. Apparently they did in older versions of fltk, I restored this. (bug 108771) - Removed 8-bit colormap drawing code that was not doing anything in fl_draw_image due to the colormap allocation changes. I also made fl_color(r,g,b) actually allocate the requested color rather than the nearest fltk color-cube color (this is only done for the first color that maps to a given entry in the fltk color cube), the result is that pixmaps with a small number of colors are drawn much more accurately. The resulting code seems to produce better images and is a good deal smaller! - Fixed makeinclude.in so CFLAGS are used for c source code instead of CXXFLAGS. (bug 108694) - Better fix for gif files suggested by pauly (bug 108770) - Performance of Fl_Gl_Window may be improved on some types of OpenGL implementations, in particular MESA or other software emulators, by setting the GL_SWAP_TYPE environment variable. This variable declares what is in the back buffer after you do a swapbuffers: setenv GL_SWAP_TYPE COPY This indicates that the back buffer is copied to the front buffer, and still contains it's old data. This is true of many hardware implementations. Setting this will speed up emulation of overlays, and widgets that can do partial update can take advantage of this as damage() will not be cleared to -1. setenv GL_SWAP_TYPE NODAMAGE This indicates that nothing changes the back buffer except drawing into it. This is true of MESA and Win32 software emulation and perhaps some hardware emulation on systems with lots of memory. All other values for GL_SWAP_TYPE, and not setting the variable, cause fltk to assumme that the back buffer must be completely redrawn after a swap. This is easily tested by running the gl_overlay demo program and seeing if the display is correct when you drag another window over it or if you drag the window off the screen and back on. You have to exit and run the program again for it to see any changes to the environment variable. - Optimized colormap usage on 8-bit displays with images. New code only allocates colors as they are needed (still converts indexed images to full RGB and dithers, tho...) - Fixed .gif files in FLUID, they were broken by the fix for large .xpm files in version 1.0.9. - Fix for OpenGL hardware overlays with the transparent index != 0. Tested on the brand new HP Linux Workstations, this is the only bug encountered. Both X and OpenGL hardware overlay works perfectly on these, though configue may not enable it by default...) - Fl_Choice and all other Fl_Menu_ subclasses draw the items using textcolor() as the default color of the text. - Fix suggested by Stuart Levy to fix scrolling when deleting items from the browser. - Replaced the -$(MAKEFLAGS) with$(MFLAGS) as per the gmake documenation. Apperntly this works with other make programs and MAKEFLAGS is passed invisibly by gmake, though the documenation is not too clear... CHANGES SINCE FLTK 1.0.8 - More documentation fixes. - GLUT_STROKE_*_ROMAN in glut.h are defined as 0,1 on WIN32 to match the glut header files there. - Added Fl::has_timeout() and Fl::has_idle() functions. - Added new Fl::repeat_timeout() method that measures time from when the last timeout was called. This has slightly less overhead and allows accurate spacing of timeouts. - More Cygwin changes - FLUID could crash with identifiers with trailing whitespace. - Fixed the XPM loading code in FLUID to handle files longer than 2048 lines. - Added a bunch of missing FL_EXTERN's to glut.h to eliminate GLUT linking errors under WIN32. - Fix for sliders so that clicking on one with a small (or zero) slider_size will not move the slider. - fl_shortcut.cxx didn't export fl_old_shortcut() in the WIN32 DLL. - Fixed xpaint link in the documentation. - Included Fl_Input word-wrap fixes from Alexander Rabi Beels. This will not affect things much because word-wrap is normally disabled. - Patch from Stuart Levy so the *last* widget in an Fl_Pack may be resizable. This should be compatable because resizable didn't do anything before so there was no reason to set it. - Cleaned up the timeout and Fl::wait() code. The new code calls the clock function less than half as much, which results in a noticable performance improvement in some apps. - Fl::wait(time) with a time greater than the system can handle (24.855 days on NT, the same on some Unix systems) will now act as though the time is infinity. Before it would do unpredictable things. - "USE_POLL" now compiles and works, although it is disabled by default. poll() is an alternative to the UNIX select() call which is available on some version of UNIX and may be faster depending on the platform; try it by editing config.h. - The WIN32 USE_ASYNC_SELECT code now does translation and dispatching of the select events; this makes Windows a lot happier. - Added a check for an open display in Fl::wait() so that you don't need an open window under X to call it. [changes in snapshot 2] - fl_old_shortcut() wasn't being exported in the WIN32 DLL project. - Updated Cygwin and Mingw makefiles. - Updated the BC++ project file. - You can no longer insert control chars into Fl_Int/Float_Input. - Fl_Multiline_Input now resets the horizontal position when focus is changed; this caused problems when multiple multiline widgets were used in an application. - All handle() methods are now public, and all draw() methods are now protected in FLTK widgets. - More fixes to the OpenGL overlay code on win32. This now seems to work quite reliably on several different pieces of hardware. Apparently doing SetLayerPaletteEntries with a palette larger than the overlay size caused the drivers to screw up in unpredictable ways. Also SwapBuffers swapped both the overlay and main window, which is not what fltk's interface wanted, this was easy to fix however. - Patch for full scrollbars so that clicking on them does not move anything. - Documentation fixes. - Better horizontal scrolling of Fl_Input when cursor is near the end of the line. - Fl_Input::value(x) selects all text. - Fl_Output and Fl_Multiline_Output would scroll to the end of the text. - filename_isdir() now drops any trailing slash from the filename (needed for Windows) - Added return type for main() function in line_style demo. - Running FLUID with the "-cs" option writes the I18N message file. - The WIN32 version of XParseGeometry() didn't initialize some variables. This caused a compiler warning but did not affect the actual code. [changes in snapshot 1] - EMail changes - fltk-bugs@easysw.com now officially fltk-bugs@fltk.org. - The FLTK DLL project file didn't include fl_compose.cxx - Dropped the GCC -fno-rtti option since it caused problems with existing programs. - Moved the .fl rules back to the test directory. - Fixed some makefile and spec file problems. - Fixed hardware overlays. The problem was the new fl_clipped() code, which tests against the current window size. The hardware overlay code did not set the current window when drawing the overlay. I needed hardware overlay for DD's code, I'm not sure if these fixes are good enough to enable this in our general release. Hardware overlay still only works on SGI Irix. - Some patches to turn off the MSVC++ -Oa (assumme no aliasing) optimization flag. Suprisingly this only broke a few parts of fltk, or at least these are the only ones I found. - Does not unmap child windows when the main window is iconized. This reduces flashing when the window is deiconized. - Fl::key() is set to zero by all events except key down/up. This will allow you to reliably test if an event or callback was produced by a keystroke. Fixes the bug posted about stopping Escape from closing the window. - User defined cursors on OpenGL windows slowed down NT a *LOT*. Some attempts to fix this by turning off the cursor while drawing the window. - Filename completion in the file chooser works better on NT. Typing TAB fixes the case of everything you typed to match the shortest name that can be completed. CHANGES SINCE FLTK 1.0.7 - Many documentation changes/fixes/improvements. - FLUID didn't save Fl_Double_Window's as double-buffered windows. - Fl_Menu_ text color is used if Fl_Menu_Item text color is not set. - Added Fl::first_window(window) method to change the "top" window that is used when showing modal windows. By default it is the window the user last clicked/typed in. - The Fl_Menu::global() handler now uses the current top window instead of the menu bar for modal stuff. - Added fl_line_style() function to set the line style. Note that user-defined line styles ONLY WORK UNDER X11 and Windows NT/2000. Windows 95/98 do, however, support the "standard" line styles. - Fl::wait() does not return immediately when no windows - XForms keyboard shortcuts using hex keycode constants now work. - Updated the configure script for *BSD and to turn off exceptions and RTTI in the FLTK library itself (does not affect applications which use these things) - FLUID now supports I18N using the POSIX or GNU mechanisms. - Fixed definition of glutBitmapWidth to match header file. - Does not turn visible() on when a window is iconized() or if a modal window is shown and it's parent is iconized. This allows the code "while (w->visible() && w->damage()) Fl::check();" to reliably wait for the window to be mapped and drawn the first time. - Setting box(FL_NO_BOX) on a button makes it an invisible overlay - FL_NORMAL_SIZE is now a global variable so you can change the default text size prior to creating your widgets. - Menus now draw properly with a box type of FL_FLAT_BOX. - Cygwin fixes to compile in POSIX mode. - Fl_Value_Input callback can call value() or destructor. - OpenGL overlays now work under Windows NT! - Fl_Slider and Fl_Scrollbar could cause a divide by zero. - Clicking in an Fl_Input field no longer selects the whole field, it just moves the text cursor. - Tru64 UNIX fixes for filename_list() - Fl_Browser now draws itself properly when deactivated. - FLUID GUIs now use Courier font for all code input. - The FLUID OK and Cancel buttons are now all shown in the same order in all windows. - Fixes to compile under GCC 2.95.2 - Fixed the BC5 project files. - FL_LEFT_MOUSE and friends are now in - Fixes for fake OpenGL overlay code under WIN32. - Message windows are now resizeable. - On WIN32 non_modal (but not modal) windows have the close and size boxes. - Fl_Button and friends didn't honor the FL_WHEN_NOT_CHANGED condition. - Disabled XDBE on all platforms. - XGetDefault patch from James Roth - New fl_open_display(Display *) function to allow FLTK to share a display connection with another toolkit (like Xt, GTK, etc.) - Shortcut labels for special keys should now display properly under WIN32. - fl_set_fonts() did not reuse fonts. - Fixed shortcut problem under WIN32 when the focus window changes. - "dead" keys should now work under X11. - Fixes to make FLTK compile with GCC 2.95.2 - FL_SHORTCUT fix for I18N. - Fixed cut/paste problems under WIN32 - FLUID now produces correct code for nested class destructors. - Nested windows should now redraw properly under WIN32. - "table" is now static in fl_cursor.cxx - Fl_Chart used the textcolor() and not the color() for horizontal bar charts. - Now set the input hint for TWM and TWM-derived window managers. - Now look for TrueColor visual if FLTK is compiled with USE_COLORMAP == 0. - Fl_Scrollbar could generate a divide-by-0 error if the min and max values were the same. - Fl_Menu_::remove() now removes whole submenus if needed. - Scrollbar buttons now draw themselves pushed in as needed. - Fixed the gl_overlay demo (and gl overlays in general) when they are faked with no hardware and the window is resized. - Selections weren't shown in Fl_Browser widgets when an item used the @B (background) format. - Windows can now be resized by the program under X11 for more window managers. - OS/2 makeinclude updates. - Added Fl.H required by an inline function in Fl_Repeat_Button.H - Fl_add_idle adds new functions to the end of the queue ring, rather than the start, so they are executed in the order added, and a callback that adds itself does not prevent others from being called. - FLUID lets you type in code that starts with '#' for cpp directives. - XBell() could be called before the X11 display was opened, causing a segfault. - Fixed Fl_Gl_Window::ortho() - Borland C++ doesn't define GLint to "int", but instead to "long"... - Fixed Fl_Browser scrollbars within an Fl_Scroll widget. - Fl_Output (and non-focused Fl_Input) now scroll in response to position() - Fl_Input now does not scroll horizontally if the entire string will fit in the widget. - Fl_Scrollbar didn't push the right arrow buttons when you clicked outside the scroller. - Now use WSAAsyncSelect() for better socket performance with Fl::add_fd() CHANGES SINCE FLTK 1.0.6 - Fixed Fl_Input_ bug under WIN32 - no longer stop accepting input when one of the "Windows" keys is pressed. - Now call TranslateEvent for all events under WIN32. - Fixes for OpenBSD and NetBSD - The FL_CURSOR_HAND cursor now uses the IDC_HAND cursor instead of IDC_UPARROW under Windows 98 and 2000. - Fl_Scrollbar now does a page-up/down when you click outside the scroller. - Fl_Window::show(0, NULL) causes core dump - Fixed a compile-time error in fl_call_main.c for Borland C++. - "fluid -c filename.fl" would try to open an X display if the FLUID file contained an Fl_Browser widget. - Fl_Browser now correctly measures items with @C or @B color formatting commands. - Fixed a bitmap drawing bug for WIN32 (bit reversal table was wrong) - fl_xyz() dialogs now set a title in the title bar. - fl_alert() sounds the bell under X11. - fl_xyz() dialogs now call MessageBeep() under WIN32. - Fl_Browser_ didn't draw the selection box with the inactive color when the browser wasn't activated. - Fl_Browser now responds to FL_KEYBOARD as well as FL_SHORTCUT. If you subclass it to accept focus then keyboard navigation will work. - Fl_Tile and Fl_Tabs do their callback when the user changes their display. - Made some of the private methods of Fl_Browser protected. - Now set win_gravity correctly, this helps some X window managers that use it position the window where FLTK wants it to be. - 0-width browsers crashed. - Minor change: if the X window manager does not do anything else with windows that don't have their position specified, the windows appear centered in the screen, rather than in the top-left corner. This happened with modal windows under Irix 4Dwm. This also causes windows to be centered when no window manager is running, which might be useful for installation gui programs? - Clicking in an Fl_Input field the first time selects the entire field. - Clicking the middle mouse button in an Fl_Input field now inserts the text at the indicated position instead of the cursor position. - Drag-selecting text in an Fl_Input field now copies the text automatically. - Fl::flush() no longer calls the draw() method for invisible windows. - Calling deactivate() on an invisible widget could cause an infinite loop in some obscure cases. - Added #pragma's for SGI C++ compilers - the 6.{23} X headers had errors in them. - Fl_Gl_Window::ortho() changed so that text and images are not erased if the origin is off the left/bottom of the window. - Small change to Fl_Input so that a click that gives it the focus also selects all the text. - Fixed a slider drawing problem. - You can now add/delete children of Fl_Tabs widgets whether or not they are visible. - Now embed woff options for SGI C++ compilers (gets rid of X11 header warnings) - draw_pixmap used a cast that the Digital UNIX C++ compiler didn't like. - The GLUT function key constants were off by one. - The XPM reading code didn't handle RGB colors other than #rrggbb. CHANGES SINCE FLTK 1.0.5 - Fl_win32.cxx defined WM_MOUSE_LEAVE instead of WM_MOUSELEAVE. - Fl_get_key_win32.cxx needed to include - gl_draw_pixmap.cxx needed a pointer cast for ANSI C++. - Fl_Repeat_Button didn't always delete its timeout. - Now keep track of the current OpenGL context; this provides significant performance improvements for OpenGL applications with a single context. CHANGES SINCE FLTK 1.0.4 - Fl_Roller didn't handle a width and height of 0. - filename_list() fix for FreeBSD. - Fixed RPM install docos - needed "--install" option... - Fl_Browser_ wouldn't draw the vertical scrollbar right away if it added a horizontal one which covered the last line. - Fl_Tabs problems - single-character labels don't show up (problem in measure_tabs() or measure_label() methods?), and doesn't clear top tab area before drawing tabs. - Fl_Browser needs a destructor. - fl_draw_label() quoted characters between 0x80 and 0xa0, which caused problems for some programs using the WinANSI character set. - FLUID didn't handle declared class destructors. - Fixed another WIN32 cut/paste bug. - Fl_Tabs didn't work properly when there was only 1 tab. - Fl_Menu::add() didn't delete the old array. - Fl_Repeat_Button didn't delete its timeout when disabled. - fl_draw() would crash if no font was set (now defaults to a 14-pixel Helvetica font) - Can't forward declare classes; need to check for "class ", "struct ", "union ", etc. See Bill's message - Added #pragma around xlib.h for IRIX - FL_KEYBOARD events have the correct x/y when sent to child X windows. Note that if you worked around this bug by adjusting the x/y yourself you will have to change your code. In addition all events have the correct x/y when sent to the grab() widget. And the code to do all this was simplified a lot. - The XPM code didn't handle named colors with spaces in the names. - Pressing ESCape closed the window with pointer focus, even if there was a modal window open (now closes the modal window). - FLUID no longer produces trigraphs accidentally in the image data. - FLUID uses string constant concatenation to produce shorter image data. - The Fl_Group deletion code crashed if there was exactly one child widget. - Simulated overlays in single-buffered Fl_Gl_Windows now draw correctly (though very slowly as it requires the entire window to be redrawn to erase the overlay). This fix ported our Digital Domain programs better to systems with no overlay hardware. - Added support for extern "C" declarations in FLUID. - Added Fl_Pack support to FLUID. - Fixed the order of #include's in FLUID generated header files. - Fixed detection of vsnprintf and snprintf under HP-UX 10.20 once and for all. - The checkers demo did not compile with GCC 2.95 - FLUID didn't output virtual destructors properly. - Added inline "make_visible()" method to Fl_Browser. - Fl::wait() now returns immediately if any timeouts are called. - 16-bit XPM files are now properly handled. - Fl_Window::resize() was missing FL_EXPORT (caused problems with Windows DLLs) - FLUID was writing extern declarations twice. - New FLUID arrow key functionality: arrows move by one pixel, shift+arrow resizes, ctrl+arrow steps by grid CHANGES SINCE FLTK 1.0.3 - Documentation updates - Fl_Browser::bottomline(size) didn't scroll to the bottom if the second-to-last line was visible. - fl_wait() didn't poll FDs properly for WIN32. - Fixed DLL definitions for BC++. - FLUID now handles nested classes properly. - The "connect" demo now does a wait() for the PPP process so that you aren't left with a lot of zombie processes. - Fixed the FLTK colormap to use FF instead of F4 for full intensity values. - Minor change to scrollbar drawing code to match other toolkits. - New selections would cancel themselves out in WIN32. - The header file links were broken in the IRIX distributions. - fl_elapsed() now always uses GetClockTick() for WIN32. - fl_display is now initialized to GetModuleHandle(NULL) - this fixes problems people had with Cygwin and MingW32. - WinMain() is no longer compiled in with Cygwin and MingW32; it wasn't being used for those compilers anyways. - Added Solaris compiler options to configure script. - Fl_Value_Input wouldn't update properly if you set the value from a callback. - Fl_Tile wouldn't resize if the resizeable widget was the last child. - Was missing #include and #include in several files, which caused problems on some platforms. - Fixed another case where Fl_Browser_ could get in an infinite resizing loop. - Fl_win32.cxx now includes to export missing DLL symbols. - FLUID didn't handle member functions that include the scope operator. - Fl_Chart was dividing by 0 if there were no data samples or if they were all the same (min == max). CHANGES SINCE FLTK 1.0.2 - XDBE is now enabled for IRIX 6.[234] as well as 6.5. - FLUID didn't write the when() condition properly. - Tab/space/backtab/backspace can be used to navigate through menus. - Changed (DSONAME) in the src/Makefile to "libfltk.so.1 libfltk.sl.1". - Fl_Browser could read past the end of the string when computing the item height. - Fl_Browser could get in an infinite loop when checking to see if scrollbars needed to be displayed. - FLUID now honors the return type of the outermost widget. This was a problem when substituting Fl_Group in an Fl_Window widget. - Fl_Menu_::copy() wasn't allocating a power of 2 for the array size. - FLWM would crash if fl_xmousewin was deleted. - The fast_slow demo now uses output widgets. - Timers under WIN32 were unreliable. CHANGES SINCE FLTK 1.0.1 - Documentation updates - The Visual C++ project files didn't include fl_add_idle.cxx. - LIBRARY/DSO name inconsistencies in src/Makefile. - src/Makefile didn't clean the DSO. - The valuator demo now has only a single callback. - The code looked for HAVE_SYS_SELECT_H, but the config file uses HAVE_SYS_SELECT. - Fl_Image redraw not quite right under X11 or WIN32 - Problems with timeouts & cube demo under WIN32 - FLUID problems with inline functions. - Documentation fixes... - Fl_Browser::item_height() didn't handle blank lines or non-default fonts properly. - FL/math.h didn't have #ifndef...#define...#endif guards against multiple inclusion... - Fl_Menu_::copy() fix - didn't allocate power of 2... - Fl::damage() now remains true until all windows are actually redrawn. - Fl_Widget destructor, hide(), and deactivate() methods no longer send FL_LEAVE, FL_RELEASE, or FL_UNFOCUS events to the widget (which could cause applications to crash). - FLUID now outputs symbolic names for align() and when(). - Fixed select() to use maxfd + 1 instead of maxfd. - Added "Fl::remove_fd(fd, when)" function so you can remove the read and write callbacks separately. - The Fl::add_fd() and Fl::add_timeout() arrays are now dynamically allocated. - FLUID didn't always turn the FL_SUBMENU flag on for submenu titles. - The "extra code" in FLUID now is placed before the "o->end()" call for Fl_Group and its derived classes. - You can now set a FL_Window widget's class in FLUID to Fl_Group to generate a function or class that builds part of a GUI (i.e. no window). - FLUID now displays "Save file before exiting?" with the standard yes, no, and cancel buttons rather than "Discard changes?". - Fl_Menu_::add() now works with any type of menu, even one set with the menu() method. - The keypad keys were not always decoded properly under X11. - Some pointers were not being turned off when widgets were deleted, which caused some applications (like FLWM) to crash. CHANGES SINCE FLTK 1.0 - Documentation fixes. - Fl::check() didn't return the correct value, breaking a number of applications. - Fixed FLUID bug that caused styles patch to crash when you delete a menu item. - Updated valuators demo to put the values in the gui box. - Fl_Browser_::item_height() didn't always compute the correct value. - Fixed the alignment of Fl_Choice text. - Fixes for OS/2. - Fl_Menu_Item::clear() didn't clear value. - Added some changes to make FLTK work with Borland C++. - ANSI C++ fixes. - Plugged a memory leak in the fractal demo. - Fl::add_timeout() didn't work under WIN32 with small values. - The configure script and makefiles now define DSONAME and use the static library for all example programs.  Added fltk-1.3/CMake/CheckFunctionWithHeaderExists.cmake.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54  # # Check if the symbol exists in include files # # CHECK_FUNCTIONWITHHEADER_EXISTS - macro which checks the symbol exists in include files. # SYMBOL - symbol # FILES - include files to check # VARIABLE - variable to return result # MACRO(CHECK_FUNCTIONWITHHEADER_EXISTS SYMBOL FILES VARIABLE) IF("{VARIABLE}" MATCHES "^${VARIABLE}$") SET(CHECK_SYMBOL_EXISTS_CONTENT "/* */\n") SET(MACRO_CHECK_SYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS}) IF(CMAKE_REQUIRED_LIBRARIES) SET(CHECK_SYMBOL_EXISTS_LIBS "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}") ENDIF(CMAKE_REQUIRED_LIBRARIES) FOREACH(FILE ${FILES}) SET(CHECK_SYMBOL_EXISTS_CONTENT "${CHECK_SYMBOL_EXISTS_CONTENT}#include <${FILE}>\n") ENDFOREACH(FILE) SET(CHECK_SYMBOL_EXISTS_CONTENT "${CHECK_SYMBOL_EXISTS_CONTENT}\nint main()\n{\n${SYMBOL};return 0;\n}\n") FILE(WRITE${CMAKE_BINARY_DIR}/CMakeTmp/CheckSymbolExists.c "${CHECK_SYMBOL_EXISTS_CONTENT}") MESSAGE(STATUS "Looking for${SYMBOL}") TRY_COMPILE(${VARIABLE}${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/CMakeTmp/CheckSymbolExists.c CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_SYMBOL_EXISTS_FLAGS} "${CHECK_SYMBOL_EXISTS_LIBS}" OUTPUT_VARIABLE OUTPUT) IF(${VARIABLE}) MESSAGE(STATUS "Looking for ${SYMBOL} - found") SET(${VARIABLE} 1 CACHE INTERNAL "Have symbol ${SYMBOL}") FILE(APPEND${CMAKE_BINARY_DIR}/CMakeOutput.log "Determining if the ${SYMBOL} " "exist passed with the following output:\n" "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeTmp/CheckSymbolExists.c:\n" "${CHECK_SYMBOL_EXISTS_CONTENT}\n") ELSE(${VARIABLE}) MESSAGE(STATUS "Looking for${SYMBOL} - not found.") SET(${VARIABLE} "" CACHE INTERNAL "Have symbol${SYMBOL}") FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log "Determining if the${SYMBOL} " "exist failed with the following output:\n" "${OUTPUT}\nFile${CMAKE_BINARY_DIR}/CMakeTmp/CheckSymbolExists.c:\n" "${CHECK_SYMBOL_EXISTS_CONTENT}\n") ENDIF(${VARIABLE}) ENDIF("${VARIABLE}" MATCHES "^${VARIABLE}$") ENDMACRO(CHECK_FUNCTIONWITHHEADER_EXISTS)  Added fltk-1.3/CMake/FLTKConfig.cmake.in.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37  #----------------------------------------------------------------------------- # # FLTKConfig.cmake - FLTK CMake configuration file for external projects. # # This file is configured by FLTK and used by the UseFLTK.cmake module # to load FLTK's settings for an external project. # The FLTK source tree. SET(FLTK_SOURCE_DIR "@FLTK_SOURCE_DIR@") # The FLTK include file directories. SET(FLUID_COMMAND "@FLTK_FLUID_COMMAND@") SET(FLTK_EXECUTABLE_DIRS "@FLTK_EXECUTABLE_DIRS@") SET(FLTK_LIBRARY_DIRS "@FLTK_LIBRARY_DIRS@") SET(FLTK_LIBRARIES "@FLTK_LIBRARIES@") SET(FLTK_INCLUDE_DIRS "@FLTK_INCLUDE_DIRS@") # The C and C++ flags added by FLTK to the cmake-configured flags. SET(FLTK_REQUIRED_C_FLAGS "@FLTK_REQUIRED_C_FLAGS@") SET(FLTK_REQUIRED_CXX_FLAGS "@FLTK_REQUIRED_CXX_FLAGS@") # The FLTK version number SET(FLTK_VERSION_MAJOR "@FLTK_VERSION_MAJOR@") SET(FLTK_VERSION_MINOR "@FLTK_VERSION_MINOR@") SET(FLTK_VERSION_PATCH "@FLTK_VERSION_PATCH@") # Is FLTK using shared libraries? SET(FLTK_BUILD_SHARED_LIBS "@BUILD_SHARED_LIBS@") SET(FLTK_BUILD_SETTINGS_FILE "@FLTK_BUILD_SETTINGS_FILE@") # The location of the UseFLTK.cmake file. SET(FLTK11_USE_FILE "@FLTK_USE_FILE@") # The ExodusII library dependencies. IF(NOT FLTK_NO_LIBRARY_DEPENDS) INCLUDE("@FLTK_LIBRARY_DEPENDS_FILE@") ENDIF(NOT FLTK_NO_LIBRARY_DEPENDS)  Added fltk-1.3/CMake/FLTKUse.cmake.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68  IF(NOT FLTK11_FOUND) MESSAGE(FATAL_ERROR "Something went wrong. You are including FLTKUse.cmake but FLTK was not found") ENDIF(NOT FLTK11_FOUND) # ------------------------------------------------------------- # This macro automates wrapping of Fluid files # Specify the output variable name and the list of sources # The output variable can be directly added to the target. # # For example: # FLTK_WRAP_FLUID(CubeView_SRCS CubeViewUI.fl) # ADD_EXECUTABLE(CubeView CubeMain.cxx CubeView.cxx CubeView.h${CubeView_SRCS}) # ------------------------------------------------------------- MACRO(FLTK_WRAP_FLUID VARIABLE) FOREACH(src ${ARGN}) IF("${src}" MATCHES ".fl$") GET_FILENAME_COMPONENT(fname${src} NAME_WE) GET_FILENAME_COMPONENT(fpath ${src} PATH) GET_SOURCE_FILE_PROPERTY(gen${src} GENERATED) IF(gen) SET(fluid_name "${src}") ELSE(gen) SET(fluid_name "${CMAKE_CURRENT_SOURCE_DIR}/${fpath}/${fname}.fl") IF(NOT EXISTS "${fluid_name}") SET(fluid_name "${CMAKE_CURRENT_BINARY_DIR}/${fpath}/${fname}.fl") IF(NOT EXISTS "${fluid_name}") SET(fluid_name "${fpath}/${fname}.fl") IF(NOT EXISTS "${fluid_name}") MESSAGE(SEND_ERROR "Cannot find Fluid source file: ${fpath}/${fname}.fl") ENDIF(NOT EXISTS "${fluid_name}") ENDIF(NOT EXISTS "${fluid_name}") ENDIF(NOT EXISTS "${fluid_name}") ENDIF(gen) SET(cxx_name "${CMAKE_CURRENT_BINARY_DIR}/${fname}.cxx") SET(h_name "${CMAKE_CURRENT_BINARY_DIR}/${fname}.h") SET(${VARIABLE} "${${VARIABLE}};${cxx_name}") ADD_CUSTOM_COMMAND( OUTPUT${cxx_name} DEPENDS "${fluid_name}" "${FLUID_COMMAND}" COMMAND ${FLUID_COMMAND} ARGS -c${fluid_name}) ADD_CUSTOM_COMMAND( OUTPUT ${h_name} DEPENDS "${fluid_name}" "${FLUID_COMMAND}" COMMAND${FLUID_COMMAND} ARGS -c ${fluid_name}) ENDIF("${src}" MATCHES ".fl$") ENDFOREACH(src) ENDMACRO(FLTK_WRAP_FLUID VARIABLE) # Make FLTK easier to use INCLUDE_DIRECTORIES(${FLTK_INCLUDE_DIRS}) LINK_DIRECTORIES(${FLTK_LIBRARY_DIRS}) # Load the compiler settings used for FLTK. IF(FLTK_BUILD_SETTINGS_FILE) INCLUDE(CMakeImportBuildSettings) CMAKE_IMPORT_BUILD_SETTINGS(${FLTK_BUILD_SETTINGS_FILE}) ENDIF(FLTK_BUILD_SETTINGS_FILE) # Add compiler flags needed to use FLTK. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}${FLTK_REQUIRED_C_FLAGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${FLTK_REQUIRED_CXX_FLAGS}") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}${FLTK_REQUIRED_EXE_LINKER_FLAGS}") SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}${FLTK_REQUIRED_SHARED_LINKER_FLAGS}") SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}${FLTK_REQUIRED_MODULE_LINKER_FLAGS}") 

Added fltk-1.3/CMake/PlatformTests.cxx.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81  #ifdef HAVE_LIBZ #include int main() { unsigned long compressedSize = 0; unsigned char cd[100]; const unsigned char ud[100] = ""; unsigned long uncompressedSize = 0; // Call zlib's compress function. if(compress(cd, &compressedSize, ud, uncompressedSize) != Z_OK) { return 0; } return 1; } #endif #ifdef HAVE_LIBJPEG #include #include int main() { struct jpeg_decompress_struct cinfo; jpeg_create_decompress(&cinfo); jpeg_read_header(&cinfo, TRUE); return 1; } #endif #ifdef HAVE_LIBPNG #include int main() { png_structp png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, (png_voidp)NULL, NULL, NULL); png_infop info_ptr = png_create_info_struct(png_ptr); png_set_sig_bytes(png_ptr, 8); png_read_info(png_ptr, info_ptr); return 0; } #endif #ifdef HAVE_PNG_H #include int main() { retunr 0;} #endif #ifdef HAVE_PNG_GET_VALID #include int main() { png_structp png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, (png_voidp)NULL, NULL, NULL); png_infop info_ptr = png_create_info_struct(png_ptr); png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS); return 0; } #endif #ifdef HAVE_PNG_SET_TRNS_TO_ALPHA #include int main() { png_structp png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, (png_voidp)NULL, NULL, NULL); png_set_tRNS_to_alpha(png_ptr); return 0; } #endif 

Added fltk-1.3/CMakeLists.txt.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412  # Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org) # Written by Andy Cedilnik and Julien Jomier PROJECT(FLTK) CMAKE_MINIMUM_REQUIRED(VERSION 2.0) # The FLTK version SET(FLTK_VERSION_MAJOR "1") SET(FLTK_VERSION_MINOR "3") SET(FLTK_VERSION_PATCH "0") SET(FLTK_VERSION "${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}") SET(FLTK_VERSION_FULL "${FLTK_VERSION}.${FLTK_VERSION_PATCH}") SET(FLTK_LIBRARIES "fltk_images;fltk;fltk_gl;fltk_forms") # Executables and libraries should just go to bin SET(EXECUTABLE_OUTPUT_PATH "${FLTK_BINARY_DIR}/bin" CACHE INTERNAL "Where to put the executables for FLTK" ) SET(LIBRARY_OUTPUT_PATH "${FLTK_BINARY_DIR}/bin" CACHE INTERNAL "Where to put the libraries for FLTK" ) # Allow building shared libraries OPTION(BUILD_SHARED_LIBS "Build FLTK as a shared library" OFF) # Search for modules in the FLTK source dir first SET(CMAKE_MODULE_PATH "${FLTK_SOURCE_DIR}/CMake") #----------------------------------------------------------------------------- # Test for some required system information. FIND_PACKAGE(Threads) SET (CMAKE_USE_PTHREADS "${CMAKE_USE_PTHREADS_INIT}" CACHE BOOL "Use the pthreads library.") # We need ansi c-flags, especially on HP SET(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS}${CMAKE_C_FLAGS}") SET(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS}) IF(WIN32) IF(NOT CYGWIN) IF(BORLAND) SET( FLTK_PLATFORM_DEPENDENT_LIBS import32 ) ELSE(BORLAND) SET( FLTK_PLATFORM_DEPENDENT_LIBS comctl32 ) ENDIF(BORLAND) ENDIF(NOT CYGWIN) ENDIF(WIN32) # OS X with X11 is not currently supported! SET(FLTK_X11 1) SET(FLTK_APPLE 0) IF(APPLE) OPTION(FLTK_APPLE_X11 "Use X11 on Mac instead of Carbon" OFF) MARK_AS_ADVANCED(FLTK_APPLE_X11) IF(NOT FLTK_APPLE_X11) SET(FLTK_APPLE 1) SET(FLTK_X11 0) OPTION(FLTK_QUARTZ "Use Quartz instead of Quickdraw" OFF) ENDIF(NOT FLTK_APPLE_X11) ENDIF(APPLE) IF(UNIX AND NOT APPLE) FIND_PACKAGE(X11) ADD_DEFINITIONS(-DUSE_X11) SET( FLTK_PLATFORM_DEPENDENT_LIBS${X11_LIBRARIES} -lm) ENDIF(UNIX) IF(APPLE AND NOT FLTK_APPLE_X11) SET( FLTK_PLATFORM_DEPENDENT_LIBS "-framework Carbon -framework Cocoa -framework ApplicationServices -lz") ENDIF(APPLE AND NOT FLTK_APPLE_X11) IF(CYGWIN) ADD_DEFINITIONS(-DWIN32) SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 supc++ -lm -lgdi32) ENDIF(CYGWIN) IF(MINGW) ADD_DEFINITIONS(-DWIN32) SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 gdi32 comdlg32) ENDIF(MINGW) INCLUDE(CheckIncludeFiles) # Check if header file exists and add it to the list. MACRO(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE) CHECK_INCLUDE_FILES("${PROJECT_INCLUDES};${FILE}" ${VARIABLE}) IF(${VARIABLE}) SET(PROJECT_INCLUDES ${PROJECT_INCLUDES}${FILE}) ENDIF(${VARIABLE}) ENDMACRO(CHECK_INCLUDE_FILE_CONCAT) CHECK_INCLUDE_FILE_CONCAT("GL/glu.h" HAVE_GL_GLU_H) CHECK_INCLUDE_FILE_CONCAT("OpenGL/glu.h" HAVE_OPENGL_GLU_H) CHECK_INCLUDE_FILE_CONCAT("dirent.h" HAVE_DIRENT_H) CHECK_INCLUDE_FILE_CONCAT("stdio.h" HAVE_STDIO_H) CHECK_INCLUDE_FILE_CONCAT("strings.h" HAVE_STRINGS_H) CHECK_INCLUDE_FILE_CONCAT("sys/dir.h" HAVE_SYS_DIR_H) CHECK_INCLUDE_FILE_CONCAT("sys/ndir.h" HAVE_SYS_NDIR_H) CHECK_INCLUDE_FILE_CONCAT("sys/select.h" HAVE_SYS_SELECT_H) CHECK_INCLUDE_FILE_CONCAT("sys/stdtypes.h" HAVE_SYS_STDTYPES_H) CHECK_INCLUDE_FILE("pthread.h" CMAKE_HAVE_PTHREAD_H) FIND_PACKAGE(ZLIB) FIND_PACKAGE(PNG) FIND_PACKAGE(JPEG) INCLUDE(CheckSymbolExists) INCLUDE(CheckFunctionWithHeaderExists) CHECK_FUNCTIONWITHHEADER_EXISTS("int strcasecmp()" "${PROJECT_INCLUDES}" HAVE_STRCASECMP) CHECK_SYMBOL_EXISTS(strlcat "${PROJECT_INCLUDES}" HAVE_STRLCAT) CHECK_SYMBOL_EXISTS(strlcpy "${PROJECT_INCLUDES}" HAVE_STRLCPY) CHECK_SYMBOL_EXISTS(vsnprintf "${PROJECT_INCLUDES}" HAVE_VSNPRINTF) CHECK_SYMBOL_EXISTS(snprintf "${PROJECT_INCLUDES}" HAVE_SNPRINTF) CHECK_SYMBOL_EXISTS(scandir "${PROJECT_INCLUDES}" HAVE_SCANDIR) INCLUDE(CheckTypeSize) CHECK_TYPE_SIZE(short SIZEOF_SHORT) CHECK_TYPE_SIZE(int SIZEOF_INT) CHECK_TYPE_SIZE(long SIZEOF_LONG) IF(${SIZEOF_SHORT} MATCHES "^2$") SET(U16 "unsigned short") ENDIF(${SIZEOF_SHORT} MATCHES "^2$") IF(${SIZEOF_INT} MATCHES "^4$") SET(U32 "unsigned") ELSE(${SIZEOF_INT} MATCHES "^4$") IF(${SIZEOF_LONG} MATCHES "^4$") SET(U32 "unsigned long") ENDIF(${SIZEOF_LONG} MATCHES "^4$") ENDIF(${SIZEOF_INT} MATCHES "^4$") IF(${SIZEOF_INT} MATCHES "^8$") SET(U64 "unsigned") ELSE(${SIZEOF_INT} MATCHES "^8$") IF(${SIZEOF_LONG} MATCHES "^8$") SET(U64 "unsigned long") ENDIF(${SIZEOF_LONG} MATCHES "^8$") ENDIF(${SIZEOF_INT} MATCHES "^8$") # Set an option to build FLTK with OpenGL support SET(HAVE_GL 0) OPTION(USE_OPENGL "OpenGL Support" ON) IF(USE_OPENGL) FIND_PACKAGE(OpenGL) IF(OPENGL_FOUND) SET(HAVE_GL 1) INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) ENDIF(OPENGL_FOUND) ENDIF(USE_OPENGL) # # Perform the FLTK specific test with status output # MACRO(PERFORM_CMAKE_TEST FILE TEST) IF("${TEST}" MATCHES "^${TEST}$") # Perform test SET(MACRO_CHECK_FUNCTION_DEFINITIONS "-D${TEST} ${CMAKE_REQUIRED_FLAGS}") IF(CMAKE_REQUIRED_LIBRARIES) SET(TEST_ADD_LIBRARIES "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}") ENDIF(CMAKE_REQUIRED_LIBRARIES) MESSAGE(STATUS "Performing Test ${TEST}") TRY_COMPILE(${TEST} ${CMAKE_BINARY_DIR}${CMAKE_CURRENT_SOURCE_DIR}/${FILE} CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS} -DLINK_LIBRARIES:STRING=${CMAKE_TEST_SPECIAL_LIBRARIES} "${TEST_ADD_LIBRARIES}" OUTPUT_VARIABLE OUTPUT) IF(${TEST}) SET(${TEST} 1 CACHE INTERNAL "CMake test ${FUNCTION}") MESSAGE(STATUS "Performing Test${TEST} - Success") ELSE(${TEST}) MESSAGE(STATUS "Performing Test${TEST} - Failed") SET(${TEST} 0 CACHE INTERNAL "Test${FUNCTION}") WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log "Performing Test${TEST} failed with the following output:\n" "${OUTPUT}\n" APPEND) ENDIF(${TEST}) ENDIF("${TEST}" MATCHES "^${TEST}$") ENDMACRO(PERFORM_CMAKE_TEST FILE TEST) # Set an option to build the zlib library or not OPTION(FLTK_USE_SYSTEM_ZLIB "Use's system zlib" OFF) IF(FLTK_USE_SYSTEM_ZLIB) IF(ZLIB_FOUND) SET(CMAKE_TEST_SPECIAL_LIBRARIES${ZLIB_LIBRARIES}) SET(FLTK_ZLIB_LIBRARIES ${ZLIB_LIBRARIES}) PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_LIBZ) ENDIF(ZLIB_FOUND) # We build the fltk zlib ELSE(FLTK_USE_SYSTEM_ZLIB) MARK_AS_ADVANCED(ZLIB_INCLUDE_DIR) MARK_AS_ADVANCED(ZLIB_LIBRARY) SUBDIRS(zlib) SET(HAVE_LIBZ 1) SET(FLTK_ZLIB_LIBRARIES fltk_zlib) SET(FLTK_LIBRARIES "${FLTK_LIBRARIES};fltk_zlib") INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/zlib") ENDIF(FLTK_USE_SYSTEM_ZLIB) # Set an option to build the jpeg library or not OPTION(FLTK_USE_SYSTEM_JPEG "Use's system jpeg" OFF) IF(FLTK_USE_SYSTEM_JPEG) IF(JPEG_FOUND) SET(CMAKE_TEST_SPECIAL_LIBRARIES${JPEG_LIBRARIES}) SET(FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES}) PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_LIBJPEG) ENDIF(JPEG_FOUND) # We build the fltk png ELSE(FLTK_USE_SYSTEM_JPEG) MARK_AS_ADVANCED(JPEG_INCLUDE_DIR) MARK_AS_ADVANCED(JPEG_LIBRARY) SUBDIRS(jpeg) SET(HAVE_LIBJPEG 1) SET(FLTK_JPEG_LIBRARIES fltk_jpeg) SET(FLTK_LIBRARIES "${FLTK_LIBRARIES};fltk_jpeg") INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/jpeg") ENDIF(FLTK_USE_SYSTEM_JPEG) # Set an option to build the png library or not OPTION(FLTK_USE_SYSTEM_PNG "Use's system png" OFF) IF(FLTK_USE_SYSTEM_PNG) IF(PNG_FOUND) SET(CMAKE_TEST_SPECIAL_LIBRARIES${PNG_LIBRARIES}) SET(FLTK_PNG_LIBRARIES ${PNG_LIBRARIES}) PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_LIBPNG) PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_PNG_GET_VALID) PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_PNG_SET_TRNS_TO_ALPHA) SET(HAVE_PNG_H 1) ENDIF(PNG_FOUND) # We build the fltk png ELSE(FLTK_USE_SYSTEM_PNG) MARK_AS_ADVANCED(PNG_INCLUDE_DIR) MARK_AS_ADVANCED(PNG_LIBRARY) SUBDIRS(png) SET(HAVE_LIBPNG 1) SET(HAVE_PNG_H 1) SET(FLTK_PNG_LIBRARIES fltk_png) SET(FLTK_LIBRARIES "${FLTK_LIBRARIES};fltk_png") INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/png") ENDIF(FLTK_USE_SYSTEM_PNG) SET(FLTK_DATADIR "${CMAKE_INSTALL_PREFIX}/share/FLTK") SET(FLTK_DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/FLTK") # Write out configuration header file CONFIGURE_FILE(${FLTK_SOURCE_DIR}/configh.cmake.in ${FLTK_BINARY_DIR}/config.h) # On unix create symlinks for backward compatibility SET(FLTK_CREATE_SYMLINKS 1) IF(WIN32) IF(NOT UNIX) SET(FLTK_CREATE_SYMLINKS 0) ENDIF(NOT UNIX) ENDIF(WIN32) MACRO(SAFE_CREATE_SYMLINK SOURCE DESTINATION) IF(EXISTS "${DESTINATION}") ELSE(EXISTS "${DESTINATION}") MESSAGE(STATUS "Create symlink from: \"${SOURCE}\" to \"${DESTINATION}\"") # The quoting here does seems unnatural, but this is to prevent bug in CMake EXEC_PROGRAM(ln ARGS "-s \"${SOURCE}\" \"${DESTINATION}\"" OUTPUT_VARIABLE ln_output RETURN_VALUE ln_retval) IF("${ln_retval}" GREATER 0) MESSAGE(FATAL_ERROR "Problem creatin symlink from \"${SOURCE}\" to \"${DESTINATION}\":\n${ln_output}") ENDIF("${ln_retval}" GREATER 0) ENDIF(EXISTS "${DESTINATION}") ENDMACRO(SAFE_CREATE_SYMLINK SOURCE DESTINATION) # If this is out-of-source build, then copy FL directory FILE(GLOB FLTK_HEADER_FILES "${FLTK_SOURCE_DIR}/FL/*.[hHr]") FOREACH(file ${FLTK_HEADER_FILES}) GET_FILENAME_COMPONENT(ext "${file}" EXT) GET_FILENAME_COMPONENT(namewe "${file}" NAME_WE) GET_FILENAME_COMPONENT(name "${file}" NAME) STRING(COMPARE EQUAL "${ext}" ".h" lower_case_h) STRING(COMPARE EQUAL "${ext}" ".H" upper_case_h) IF(lower_case_h OR upper_case_h) SET(outfile_h "${FLTK_BINARY_DIR}/FL/${namewe}.h") SET(outfile_H "${FLTK_BINARY_DIR}/FL/${namewe}.H") CONFIGURE_FILE("${file}" "${outfile_H}" COPYONLY IMMEDIATE) CONFIGURE_FILE("${file}" "${outfile_h}" COPYONLY IMMEDIATE) # IF(FLTK_CREATE_SYMLINKS) # SAFE_CREATE_SYMLINK("${outfile_H}" "${outfile_h}") # ENDIF(FLTK_CREATE_SYMLINKS) ELSE(lower_case_h OR upper_case_h) STRING(COMPARE EQUAL "${ext}" ".r" mac_resource_file) IF(mac_resource_file) SET(outfile "${FLTK_BINARY_DIR}/FL/${name}") CONFIGURE_FILE("${file}" "${outfile}" COPYONLY IMMEDIATE) ENDIF(mac_resource_file) ENDIF(lower_case_h OR upper_case_h) ENDFOREACH(file) IF(FLTK_CREATE_SYMLINKS) SAFE_CREATE_SYMLINK( "${FLTK_BINARY_DIR}/FL" "${FLTK_BINARY_DIR}/Fl") SAFE_CREATE_SYMLINK( "${FLTK_BINARY_DIR}/FL/gl.H" "${FLTK_BINARY_DIR}/FL/gl.h") # Create the symlinks FILE(READ${FLTK_SOURCE_DIR}/fltk.list.in SYMLINKSFILE) STRING(REGEX MATCHALL "(l 0000 root sys .includedir/)([^(\n)])+" SYMLINKS ${SYMLINKSFILE}) FOREACH(var${SYMLINKS} ) IF("${var}" MATCHES ".H") STRING(REGEX MATCH "(/F)([^(\n)])+" tmp${var}) STRING(REGEX MATCH "(/F)([^( )])+" in ${tmp}) STRING(REGEX MATCH "( )([^(\n)])+" out${tmp}) STRING(REGEX REPLACE "( )" "" out ${out}) SAFE_CREATE_SYMLINK("${FLTK_BINARY_DIR}/FL/${out}" "${FLTK_BINARY_DIR}/${in}") ENDIF("${var}" MATCHES ".H") ENDFOREACH(var) ENDIF(FLTK_CREATE_SYMLINKS) # Set the fluid executable path UTILITY_SOURCE(FLUID_COMMAND fluid fluid fluid.cxx) SET(FLUID_COMMAND "${FLUID_COMMAND}" CACHE INTERNAL "" FORCE) # Include header files in fltk binary tree INCLUDE_DIRECTORIES(${FLTK_BINARY_DIR}) # Do the build of fltk libraries and fluid SUBDIRS(src) SUBDIRS(fluid) # Set an option to build the examples and testing OPTION(BUILD_EXAMPLES "Build the tests" ON) IF(BUILD_EXAMPLES) SUBDIRS(test) ENDIF(BUILD_EXAMPLES) OPTION(BUILD_TESTING "Build testing of FLTK" ON) IF(BUILD_TESTING) ENABLE_TESTING() INCLUDE(Dart) ENDIF(BUILD_TESTING) #----------------------------------------------------------------------------- # Help outside projects build FLTK projects. INCLUDE(CMakeExportBuildSettings) EXPORT_LIBRARY_DEPENDENCIES(${FLTK_BINARY_DIR}/FLTKLibraryDepends.cmake) CMAKE_EXPORT_BUILD_SETTINGS(${FLTK_BINARY_DIR}/FLTKBuildSettings.cmake) SET(FL_MAJOR_VERSION "${FLTK_VERSION_MAJOR}") SET(FL_MINOR_VERSION "${FLTK_VERSION_MINOR}") SET(FL_PATCH_VERSION "${FLTK_VERSION_PATCH}") SET(CFLAGS "${CMAKE_C_FLAGS}") SET(CXXFLAGS "${CMAKE_CXX_FLAGS}") SET(CC "${CMAKE_C_COMPILER}") SET(CXX "${CMAKE_CXX_COMPILER}") # For build tree usage SET(FLTK_FLUID_COMMAND "${FLUID_COMMAND}") SET(FLTK_LIBRARY_DEPENDS_FILE ${FLTK_BINARY_DIR}/FLTKLibraryDepends.cmake) SET(FLTK_EXECUTABLE_DIRS${EXECUTABLE_OUTPUT_PATH}) SET(FLTK_LIBRARY_DIRS ${LIBRARY_OUTPUT_PATH}) SET(FLTK_USE_FILE${FLTK_SOURCE_DIR}/CMake/FLTKUse.cmake) SET(FLTK_INCLUDE_DIRS "${FLTK_BINARY_DIR}/") SET(FLTK_BUILD_SETTINGS_FILE${FLTK_BINARY_DIR}/FLTKBuildSettings.cmake) SET(prefix "${FLTK_BINARY_DIR}") SET(exec_prefix "${prefix}") SET(exec_prefix_set "no") SET(bindir "${prefix}/bin") SET(includedir "${prefix}") SET(libdir "${prefix}/bin") SET(srcdir "${FLTK_SOURCE_DIR}") CONFIGURE_FILE("${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in" "${FLTK_BINARY_DIR}/FLTKConfig.cmake" @ONLY IMMEDIATE) CONFIGURE_FILE("${FLTK_SOURCE_DIR}/fltk-config.in" "${FLTK_BINARY_DIR}/fltk-config" @ONLY IMMEDIATE) # For installed tree usage SET(FLTK_FLUID_COMMAND "${CMAKE_INSTALL_PREFIX}/bin/fluid") SET(FLTK_LIBRARY_DEPENDS_FILE${CMAKE_INSTALL_PREFIX}/lib/FLTK-${FLTK_VERSION}/FLTKLibraryDepends.cmake) SET(FLTK_EXECUTABLE_DIRS "${CMAKE_INSTALL_PREFIX}/bin") SET(FLTK_LIBRARY_DIRS "${CMAKE_INSTALL_PREFIX}/lib") SET(FLTK_USE_FILE "${CMAKE_INSTALL_PREFIX}/lib/FLTK-${FLTK_VERSION}/FLTKUse.cmake") SET(FLTK_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/") SET(FLTK_BUILD_SETTINGS_FILE ${CMAKE_INSTALL_PREFIX}/lib/FLTK-${FLTK_VERSION}/FLTKBuildSettings.cmake) SET(prefix "${CMAKE_INSTALL_PREFIX}") SET(exec_prefix "${prefix}") SET(exec_prefix_set "no") SET(bindir "${prefix}/bin") SET(includedir "${prefix}") SET(libdir "${prefix}/lib") SET(srcdir ".") CONFIGURE_FILE("${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in" "${FLTK_BINARY_DIR}/CMake/FLTKConfig.cmake" @ONLY IMMEDIATE) CONFIGURE_FILE("${FLTK_SOURCE_DIR}/fltk-config.in" "${FLTK_BINARY_DIR}/CMake/fltk-config" @ONLY IMMEDIATE) INSTALL_FILES(/include/FL FILES${FLTK_HEADER_FILES}) INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES "${FLTK_SOURCE_DIR}/CMake/FLTKUse.cmake") INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES "${FLTK_BINARY_DIR}/FLTKBuildSettings.cmake") INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES "${FLTK_BINARY_DIR}/FLTKLibraryDepends.cmake") INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES "${FLTK_BINARY_DIR}/CMake/FLTKConfig.cmake") 

Added fltk-1.3/COPYING.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528   FLTK License December 11, 2001 The FLTK library and included programs are provided under the terms of the GNU Library General Public License (LGPL) with the following exceptions: 1. Modifications to the FLTK configure script, config header file, and makefiles by themselves to support a specific platform do not constitute a modified or derivative work. The authors do request that such modifications be contributed to the FLTK project - send all contributions to "fltk-bugs@fltk.org". 2. Widgets that are subclassed from FLTK widgets do not constitute a derivative work. 3. Static linking of applications and widgets to the FLTK library does not constitute a derivative work and does not require the author to provide source code for the application or widget, use the shared FLTK libraries, or link their applications or widgets against a user-supplied version of FLTK. If you link the application or widget to a modified version of FLTK, then the changes to FLTK must be provided under the terms of the LGPL in sections 1, 2, and 4. 4. You do not have to provide a copy of the FLTK license with programs that are linked to the FLTK library, nor do you have to identify the FLTK license in your program or documentation as required by section 6 of the LGPL. However, programs must still identify their use of FLTK. The following example statement can be included in user documentation to satisfy this requirement: [program/widget] is based in part on the work of the FLTK project (http://www.fltk.org). ----------------------------------------------------------------------- GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! 

Added fltk-1.3/CREDITS.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56  CREDITS - Fast Light Tool Kit (FLTK) Version 1.3.0 -------------------------------------------------- This file lists the people responsible for the toolkit you are now using. If you've looking for your name in lights but we've forgotten you here, please send an email to "fltk-bugs@fltk.org" and we'll update this file accordingly. CORE DEVELOPERS The following people do the day-to-day development of FLTK: Fabien Costantini (fabien67@users.sf.net) Craig P. Earls Curtis Edwards (trilec@users.sourceforge.net) Gustavo Hime (hime@users.sourceforge.net) Talbot Hughes Robert Kesterson (robertk@users.sourceforge.net) Matthias Melcher (mm@robowerk.com) James Dean Palmer (jamespalmer@users.sourceforge.net) Vincent Penne (vincentp@users.sourceforge.net) Bill Spitzak (spitzak@users.sourceforge.net) Michael Sweet (easysw@users.sourceforge.net) Carl Thompson (clip@users.sourceforge.net) Nafees Bin Zafar (nafees@users.sourceforge.net) OTHER CONTRIBUTORS The following people have contributed fixes or enhancements for FLTK: Teun Burgers Paul Chambers Stephen Davies Yuri D'Elia Greg Ercolano Yuri Fedorchenko George Garvey Duncan Gibson Mikael Hultgren Stuart Levy Howard Lightstone Mike Lindner Alexander Mai Alexander Rabi James Roth Albrecht Schlosser Andrea Suatoni Paul Sydney Aaron Ucko Emanuele Vicentini Josef Vitu Jim Wilson Ken Yarnall 

Added fltk-1.3/DartConfig.cmake.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38  # Dashboard is opened for submissions for a 24 hour period starting at # the specified NIGHLY_START_TIME. Time is specified in 24 hour format. SET (NIGHTLY_START_TIME "21:00:00 EDT") # Dart server to submit results (used by client) SET (DROP_METHOD "http") SET (DROP_SITE "public.kitware.com") SET (DROP_LOCATION "/cgi-bin/HTTPUploadDartFile.cgi") SET (TRIGGER_SITE "http://${DROP_SITE}/cgi-bin/Submit-Fltk-TestingResults.pl") # Project Home Page SET (PROJECT_URL "http://www.fltk.org") # Dart server configuration SET (ROLLUP_URL "http://${DROP_SITE}/cgi-bin/fltk-rollup-dashboard.sh") SET (CVS_WEB_URL "http://cvs.sourceforge.net/viewcvs.py/fltk/fltk/") SET (CVS_WEB_CVSROOT "fltk") SET (USE_GNATS "On") SET (GNATS_WEB_URL "http://www.fltk.org/str.php") # Continuous email delivery variables SET (CONTINUOUS_FROM "fltk-dashboard@public.kitware.com") SET (SMTP_MAILHOST "public.kitware.com") SET (CONTINUOUS_MONITOR_LIST "fltk-dashboard@public.kitware.com") SET (CONTINUOUS_BASE_URL "http://public.kitware.com/Fltk/Testing") SET (DELIVER_BROKEN_BUILD_EMAIL_WITH_TEST_FAILURES ON) SET (DELIVER_BROKEN_BUILD_EMAIL "Continuous Nightly") SET (EMAIL_FROM "fltk-dashboard@public.kitware.com") SET (DARTBOARD_BASE_URL "http://public.kitware.com/Fltk/Testing") SET (DELIVER_BROKEN_BUILD_EMAIL_WITH_CONFIGURE_FAILURES 1) SET (DELIVER_BROKEN_BUILD_EMAIL_WITH_BUILD_ERRORS 1) SET (DELIVER_BROKEN_BUILD_EMAIL_WITH_BUILD_WARNINGS 1) SET (DELIVER_BROKEN_BUILD_EMAIL_WITH_TEST_NOT_RUNS 1) SET (DELIVER_BROKEN_BUILD_EMAIL_WITH_TEST_FAILURES 1) 

Added fltk-1.3/FL/Enumerations.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890  // // "$Id: Enumerations.H 6902 2009-09-27 11:06:56Z matt$" // // Enumerations for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /** \file * This file contains type definitions and general enumerations. */ #ifndef Fl_Enumerations_H #define Fl_Enumerations_H # include "Fl_Export.H" # include "fl_types.h" /** \name Version Numbers FLTK defines some constants to help the programmer to find out, for which FLTK version a program is compiled. The following constants are defined: */ /*@{*/ /** * The major release version of this FLTK library. \sa FL_VERSION */ #define FL_MAJOR_VERSION 1 /** * The minor release version for this library. * * FLTK remains mostly source-code compatible between minor version changes. */ #define FL_MINOR_VERSION 3 /** * The patch version for this library. * * FLTK remains binary compatible between patches. */ #define FL_PATCH_VERSION 0 /** * The FLTK version number as a \em double. * * This is changed slightly from the beta versions * because the old "const double" definition would not allow for conditional * compilation... * * FL_VERSION is a double that describes the major and minor version numbers. * Version 1.1 is actually stored as 1.01 to allow for more than 9 minor * releases. * * The FL_MAJOR_VERSION, FL_MINOR_VERSION, and FL_PATCH_VERSION constants * give the integral values for the major, minor, and patch releases * respectively. */ #define FL_VERSION ((double)FL_MAJOR_VERSION + \ (double)FL_MINOR_VERSION * 0.01 + \ (double)FL_PATCH_VERSION * 0.0001) /*@}*/ // group: Version Numbers /** * Every time a user moves the mouse pointer, clicks a button, * or presses a key, an event is generated and sent to your * application. Events can also come from other programs like the * window manager. * * Events are identified by the integer argument passed to the * Fl_Widget::handle() virtual method. Other information about the * most recent event is stored in static locations and acquired by * calling the Fl::event_*() methods. This static information remains * valid until the next event is read from the window system, so it * is ok to look at it outside of the handle() method. * * \sa Fl::event_text(), Fl::event_key(), class Fl:: */ enum Fl_Event { // events /** No event. */ FL_NO_EVENT = 0, /** A mouse button has gone down with the mouse pointing at this * widget. You can find out what button by calling Fl::event_button(). * You find out the mouse position by calling Fl::event_x() and * Fl::event_y(). * * A widget indicates that it "wants" the mouse click by returning non-zero * from its Fl_Widget::handle() method. It will then become the * Fl::pushed() widget and will get FL_DRAG and the matching FL_RELEASE events. * If Fl_Widget::handle() returns zero then FLTK will try sending the FL_PUSH * to another widget. */ FL_PUSH = 1, /** A mouse button has been released. You can find out what button by * calling Fl::event_button(). * * In order to receive the FL_RELEASE event, the widget must return * non-zero when handling FL_PUSH. */ FL_RELEASE = 2, /** The mouse has been moved to point at this widget. This can * be used for highlighting feedback. If a widget wants to * highlight or otherwise track the mouse, it indicates this by * returning non-zero from its handle() method. It then * becomes the Fl::belowmouse() widget and will receive * FL_MOVE and FL_LEAVE events. */ FL_ENTER = 3, /** The mouse has moved out of the widget. * In order to receive the FL_LEAVE event, the widget must * return non-zero when handling FL_ENTER. */ FL_LEAVE = 4, /** The mouse has moved with a button held down. The current button state * is in Fl::event_state(). The mouse position is in Fl::event_x() and * Fl::event_y(). * * In order to receive FL_DRAG events, the widget must return non-zero * when handling FL_PUSH. */ FL_DRAG = 5, /** This indicates an attempt to give a widget the keyboard focus. * * If a widget wants the focus, it should change itself to display the * fact that it has the focus, and return non-zero from its handle() method. * It then becomes the Fl::focus() widget and gets FL_KEYDOWN, FL_KEYUP, * and FL_UNFOCUS events. * * The focus will change either because the window manager changed which * window gets the focus, or because the user tried to navigate using tab, * arrows, or other keys. You can check Fl::event_key() to figure out why * it moved. For navigation it will be the key pressed and interaction * with the window manager it will be zero. */ FL_FOCUS = 6, /** This event is sent to the previous Fl::focus() widget when another * widget gets the focus or the window loses focus. */ FL_UNFOCUS = 7, /** A key was pressed or released. The key can be found in Fl::event_key(). * The text that the key should insert can be found with Fl::event_text() * and its length is in Fl::event_length(). If you use the key handle() * should return 1. If you return zero then FLTK assumes you ignored the * key and will then attempt to send it to a parent widget. If none of * them want it, it will change the event into a FL_SHORTCUT event. * * To receive FL_KEYBOARD events you must also respond to the FL_FOCUS * and FL_UNFOCUS events. * * If you are writing a text-editing widget you may also want to call * the Fl::compose() function to translate individual keystrokes into * foreign characters. * * FL_KEYUP events are sent to the widget that currently has focus. This * is not necessarily the same widget that received the corresponding * FL_KEYDOWN event because focus may have changed between events. */ FL_KEYDOWN = 8, /** Equvalent to FL_KEYDOWN. * \see FL_KEYDOWN */ FL_KEYBOARD = 8, /** Key release event. * \see FL_KEYDOWN */ FL_KEYUP = 9, /** The user clicked the close button of a window. * This event is used internally only to trigger the callback of * Fl_Window derived classed. The default callback closes the * window calling Fl_Window::hide(). */ FL_CLOSE = 10, /** The mouse has moved without any mouse buttons held down. * This event is sent to the Fl::belowmouse() widget. * * In order to receive FL_MOVE events, the widget must return * non-zero when handling FL_ENTER. */ FL_MOVE = 11, /** If the Fl::focus() widget is zero or ignores an FL_KEYBOARD * event then FLTK tries sending this event to every widget it * can, until one of them returns non-zero. FL_SHORTCUT is first * sent to the Fl::belowmouse() widget, then its parents and siblings, * and eventually to every widget in the window, trying to find an * object that returns non-zero. FLTK tries really hard to not to ignore * any keystrokes! * * You can also make "global" shortcuts by using Fl::add_handler(). A * global shortcut will work no matter what windows are displayed or * which one has the focus. */ FL_SHORTCUT = 12, /** This widget is no longer active, due to Fl_Widget::deactivate() * being called on it or one of its parents. Fl_Widget::active() may * still be true after this, the widget is only active if Fl_Widget::active() * is true on it and all its parents (use Fl_Widget::active_r() to check this). */ FL_DEACTIVATE = 13, /** This widget is now active, due to Fl_Widget::activate() being * called on it or one of its parents. */ FL_ACTIVATE = 14, /** This widget is no longer visible, due to Fl_Widget::hide() being * called on it or one of its parents, or due to a parent window being * minimized. Fl_Widget::visible() may still be true after this, but the * widget is visible only if visible() is true for it and all its * parents (use Fl_Widget::visible_r() to check this). */ FL_HIDE = 15, /** This widget is visible again, due to Fl_Widget::show() being called on * it or one of its parents, or due to a parent window being restored. * Child Fl_Windows respond to this by actually creating the window if not * done already, so if you subclass a window, be sure to pass FL_SHOW * to the base class Fl_Widget::handle() method! */ FL_SHOW = 16, /** You should get this event some time after you call Fl::paste(). * The contents of Fl::event_text() is the text to insert and the number * of characters is in Fl::event_length(). */ FL_PASTE = 17, /** The Fl::selection_owner() will get this event before the selection is * moved to another widget. This indicates that some other widget or program * has claimed the selection. Motif programs used this to clear the selection * indication. Most modern programs ignore this. */ FL_SELECTIONCLEAR = 18, /** The user has moved the mouse wheel. The Fl::event_dx() and Fl::event_dy() * methods can be used to find the amount to scroll horizontally and vertically. */ FL_MOUSEWHEEL = 19, /** The mouse has been moved to point at this widget. A widget that is * interested in receiving drag'n'drop data must return 1 to receive * FL_DND_DRAG, FL_DND_LEAVE and FL_DND_RELEASE events. */ FL_DND_ENTER = 20, /** The mouse has been moved inside a widget while dragging data. A * widget that is interested in receiving drag'n'drop data should * indicate the possible drop position. */ FL_DND_DRAG = 21, /** The mouse has moved out of the widget. */ FL_DND_LEAVE = 22, /** The user has released the mouse button dropping data into the widget. * If the widget returns 1, it will receive the data in the immediately * following FL_PASTE event. */ FL_DND_RELEASE = 23 }; /** \name When Conditions */ /*@{*/ /** These constants determine when a callback is performed. * * \sa Fl_Widget::when(); * \todo doxygen comments for values are incomplete and maybe wrong or unclear */ enum Fl_When { // Fl_Widget::when(): FL_WHEN_NEVER = 0, ///< Never call the callback FL_WHEN_CHANGED = 1, ///< Do the callback only when the widget value changes FL_WHEN_NOT_CHANGED = 2, ///< Do the callback whenever the user interacts with the widget FL_WHEN_RELEASE = 4, ///< Do the callback when the button or key is released and the value changes FL_WHEN_RELEASE_ALWAYS= 6, ///< Do the callback when the button or key is released, even if the value doesn't change FL_WHEN_ENTER_KEY = 8, ///< Do the callback when the user presses the ENTER key and the value changes FL_WHEN_ENTER_KEY_ALWAYS=10, ///< Do the callback when the user presses the ENTER key, even if the value doesn't change FL_WHEN_ENTER_KEY_CHANGED=11 ///< ? }; /*@}*/ // group: When Conditions /** \name Mouse and Keyboard Events This and the following constants define the non-ASCII keys on the keyboard for FL_KEYBOARD and FL_SHORTCUT events. \todo FL_Button and FL_key... constants could be structured better (use an enum or some doxygen grouping ?) \sa Fl::event_key() and Fl::get_key(int) (use ascii letters for all other keys): */ /*@{*/ // FIXME: These codes collide with valid Unicode keys #define FL_Button 0xfee8 ///< A mouse button; use Fl_Button + n for mouse button n. #define FL_BackSpace 0xff08 ///< The backspace key. #define FL_Tab 0xff09 ///< The tab key. #define FL_Enter 0xff0d ///< The enter key. #define FL_Pause 0xff13 ///< The pause key. #define FL_Scroll_Lock 0xff14 ///< The scroll lock key. #define FL_Escape 0xff1b ///< The escape key. #define FL_Home 0xff50 ///< The home key. #define FL_Left 0xff51 ///< The left arrow key. #define FL_Up 0xff52 ///< The up arrow key. #define FL_Right 0xff53 ///< The right arrow key. #define FL_Down 0xff54 ///< The down arrow key. #define FL_Page_Up 0xff55 ///< The page-up key. #define FL_Page_Down 0xff56 ///< The page-down key. #define FL_End 0xff57 ///< The end key. #define FL_Print 0xff61 ///< The print (or print-screen) key. #define FL_Insert 0xff63 ///< The insert key. #define FL_Menu 0xff67 ///< The menu key. #define FL_Help 0xff68 ///< The 'help' key on Mac keyboards #define FL_Num_Lock 0xff7f ///< The num lock key. #define FL_KP 0xff80 ///< One of the keypad numbers; use FL_KP + n for number n. #define FL_KP_Enter 0xff8d ///< The enter key on the keypad, same as Fl_KP+'\\r'. #define FL_KP_Last 0xffbd ///< The last keypad key; use to range-check keypad. #define FL_F 0xffbd ///< One of the function keys; use FL_F + n for function key n. #define FL_F_Last 0xffe0 ///< The last function key; use to range-check function keys. #define FL_Shift_L 0xffe1 ///< The lefthand shift key. #define FL_Shift_R 0xffe2 ///< The righthand shift key. #define FL_Control_L 0xffe3 ///< The lefthand control key. #define FL_Control_R 0xffe4 ///< The righthand control key. #define FL_Caps_Lock 0xffe5 ///< The caps lock key. #define FL_Meta_L 0xffe7 ///< The left meta/Windows key. #define FL_Meta_R 0xffe8 ///< The right meta/Windows key. #define FL_Alt_L 0xffe9 ///< The left alt key. #define FL_Alt_R 0xffea ///< The right alt key. #define FL_Delete 0xffff ///< The delete key. /*@}*/ // group: Mouse and Keyboard Events /** \name Mouse Buttons These constants define the button numbers for FL_PUSH and FL_RELEASE events. \sa Fl::event_button() */ /*@{*/ #define FL_LEFT_MOUSE 1 ///< The left mouse button #define FL_MIDDLE_MOUSE 2 ///< The middle mouse button #define FL_RIGHT_MOUSE 3 ///< The right mouse button /*@}*/ // group: Mouse Buttons /** \name Event States The following constants define bits in the Fl::event_state() value. */ /*@{*/ // group: Event States // FIXME: it would be nice to have the modifiers in the upper 8 bit so that // a unicode ke (24bit) can be sent as an unsigned with the modifiers. #define FL_SHIFT 0x00010000 ///< One of the shift keys is down #define FL_CAPS_LOCK 0x00020000 ///< The caps lock is on #define FL_CTRL 0x00040000 ///< One of the ctrl keys is down #define FL_ALT 0x00080000 ///< One of the alt keys is down #define FL_NUM_LOCK 0x00100000 ///< The num lock is on // most X servers do this? #define FL_META 0x00400000 ///< One of the meta/Windows keys is down // correct for XFree86 #define FL_SCROLL_LOCK 0x00800000 ///< The scroll lock is on // correct for XFree86 #define FL_BUTTON1 0x01000000 ///< Mouse button 1 is pushed #define FL_BUTTON2 0x02000000 ///< Mouse button 2 is pushed #define FL_BUTTON3 0x04000000 ///< Mouse button 3 is pushed #define FL_BUTTONS 0x7f000000 ///< Any mouse button is pushed #define FL_BUTTON(n) (0x00800000<<(n)) ///< Mouse button n (n > 0) is pushed #define FL_KEY_MASK 0x0000ffff ///< All keys are 16 bit for now // FIXME: Unicode needs 24 bits! #ifdef __APPLE__ # define FL_COMMAND FL_META ///< An alias for FL_CTRL on WIN32 and X11, or FL_META on MacOS X # define FL_CONTROL FL_CTRL ///< An alias for FL_META on WIN32 and X11, or FL_META on MacOS X #else # define FL_COMMAND FL_CTRL ///< An alias for FL_CTRL on WIN32 and X11, or FL_META on MacOS X # define FL_CONTROL FL_META ///< An alias for FL_META on WIN32 and X11, or FL_META on MacOS X #endif // __APPLE__ /*@}*/ // group: Event States /** \name Box Types \brief FLTK standard box types This enum defines the standard box types included with FLTK. FL_NO_BOX means nothing is drawn at all, so whatever is already on the screen remains. The FL_..._FRAME types only draw their edges, leaving the interior unchanged. The blue color in Figure 1 is the area that is not drawn by the frame types. \image html boxtypes.gif "Figure 1: FLTK standard box types" \image latex boxtypes.eps "FLTK standard box types" width=10cm \todo Description of boxtypes is incomplete. See below for the defined enum Fl_Boxtype. \see src/Fl_get_system_colors.cxx */ /*@{*/ enum Fl_Boxtype { // boxtypes (if you change these you must fix fl_boxtype.C): FL_NO_BOX = 0, ///< nothing is drawn at all, this box is invisible FL_FLAT_BOX, ///< a flat box FL_UP_BOX, ///< see figure 1 FL_DOWN_BOX, ///< see figure 1 FL_UP_FRAME, ///< see figure 1 FL_DOWN_FRAME, ///< see figure 1 FL_THIN_UP_BOX, ///< see figure 1 FL_THIN_DOWN_BOX, ///< see figure 1 FL_THIN_UP_FRAME, ///< see figure 1 FL_THIN_DOWN_FRAME, ///< see figure 1 FL_ENGRAVED_BOX, ///< see figure 1 FL_EMBOSSED_BOX, ///< see figure 1 FL_ENGRAVED_FRAME, ///< see figure 1 FL_EMBOSSED_FRAME, ///< see figure 1 FL_BORDER_BOX, ///< see figure 1 _FL_SHADOW_BOX, ///< see figure 1 FL_BORDER_FRAME, ///< see figure 1 _FL_SHADOW_FRAME, ///< see figure 1 _FL_ROUNDED_BOX, ///< see figure 1 _FL_RSHADOW_BOX, ///< see figure 1 _FL_ROUNDED_FRAME, ///< see figure 1 _FL_RFLAT_BOX, ///< see figure 1 _FL_ROUND_UP_BOX, ///< see figure 1 _FL_ROUND_DOWN_BOX, ///< see figure 1 _FL_DIAMOND_UP_BOX, ///< see figure 1 _FL_DIAMOND_DOWN_BOX, ///< see figure 1 _FL_OVAL_BOX, ///< see figure 1 _FL_OSHADOW_BOX, ///< see figure 1 _FL_OVAL_FRAME, ///< see figure 1 _FL_OFLAT_BOX, ///< see figure 1 _FL_PLASTIC_UP_BOX, ///< plastic version of FL_UP_BOX _FL_PLASTIC_DOWN_BOX, ///< plastic version of FL_DOWN_BOX _FL_PLASTIC_UP_FRAME, ///< plastic version of FL_UP_FRAME _FL_PLASTIC_DOWN_FRAME, ///< plastic version of FL_DOWN_FRAME _FL_PLASTIC_THIN_UP_BOX, ///< plastic version of FL_THIN_UP_BOX _FL_PLASTIC_THIN_DOWN_BOX, ///< plastic version of FL_THIN_DOWN_BOX _FL_PLASTIC_ROUND_UP_BOX, ///< plastic version of FL_ROUND_UP_BOX _FL_PLASTIC_ROUND_DOWN_BOX, ///< plastic version of FL_ROUND_DOWN_BOX _FL_GTK_UP_BOX, ///< gtk+ version of FL_UP_BOX _FL_GTK_DOWN_BOX, ///< gtk+ version of FL_DOWN_BOX _FL_GTK_UP_FRAME, ///< gtk+ version of FL_UP_FRAME _FL_GTK_DOWN_FRAME, ///< gtk+ version of FL_DOWN_RAME _FL_GTK_THIN_UP_BOX, ///< gtk+ version of FL_THIN_UP_BOX _FL_GTK_THIN_DOWN_BOX, ///< gtk+ version of FL_THIN_DOWN_BOX _FL_GTK_THIN_UP_FRAME, ///< gtk+ version of FL_UP_FRAME _FL_GTK_THIN_DOWN_FRAME, ///< gtk+ version of FL_THIN_DOWN_FRAME _FL_GTK_ROUND_UP_BOX, ///< gtk+ version of FL_ROUND_UP_BOX _FL_GTK_ROUND_DOWN_BOX, ///< gtk+ version of FL_ROUND_DOWN_BOX FL_FREE_BOXTYPE ///< the first free box type for creation of new box types }; extern FL_EXPORT Fl_Boxtype fl_define_FL_ROUND_UP_BOX(); #define FL_ROUND_UP_BOX fl_define_FL_ROUND_UP_BOX() #define FL_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_ROUND_UP_BOX()+1) extern FL_EXPORT Fl_Boxtype fl_define_FL_SHADOW_BOX(); #define FL_SHADOW_BOX fl_define_FL_SHADOW_BOX() #define FL_SHADOW_FRAME (Fl_Boxtype)(fl_define_FL_SHADOW_BOX()+2) extern FL_EXPORT Fl_Boxtype fl_define_FL_ROUNDED_BOX(); #define FL_ROUNDED_BOX fl_define_FL_ROUNDED_BOX() #define FL_ROUNDED_FRAME (Fl_Boxtype)(fl_define_FL_ROUNDED_BOX()+2) extern FL_EXPORT Fl_Boxtype fl_define_FL_RFLAT_BOX(); #define FL_RFLAT_BOX fl_define_FL_RFLAT_BOX() extern FL_EXPORT Fl_Boxtype fl_define_FL_RSHADOW_BOX(); #define FL_RSHADOW_BOX fl_define_FL_RSHADOW_BOX() extern FL_EXPORT Fl_Boxtype fl_define_FL_DIAMOND_BOX(); #define FL_DIAMOND_UP_BOX fl_define_FL_DIAMOND_BOX() #define FL_DIAMOND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_DIAMOND_BOX()+1) extern FL_EXPORT Fl_Boxtype fl_define_FL_OVAL_BOX(); #define FL_OVAL_BOX fl_define_FL_OVAL_BOX() #define FL_OSHADOW_BOX (Fl_Boxtype)(fl_define_FL_OVAL_BOX()+1) #define FL_OVAL_FRAME (Fl_Boxtype)(fl_define_FL_OVAL_BOX()+2) #define FL_OFLAT_BOX (Fl_Boxtype)(fl_define_FL_OVAL_BOX()+3) extern FL_EXPORT Fl_Boxtype fl_define_FL_PLASTIC_UP_BOX(); #define FL_PLASTIC_UP_BOX fl_define_FL_PLASTIC_UP_BOX() #define FL_PLASTIC_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+1) #define FL_PLASTIC_UP_FRAME (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+2) #define FL_PLASTIC_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+3) #define FL_PLASTIC_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+4) #define FL_PLASTIC_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+5) #define FL_PLASTIC_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+6) #define FL_PLASTIC_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+7) extern FL_EXPORT Fl_Boxtype fl_define_FL_GTK_UP_BOX(); #define FL_GTK_UP_BOX fl_define_FL_GTK_UP_BOX() #define FL_GTK_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+1) #define FL_GTK_UP_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+2) #define FL_GTK_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+3) #define FL_GTK_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+4) #define FL_GTK_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+5) #define FL_GTK_THIN_UP_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+6) #define FL_GTK_THIN_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+7) #define FL_GTK_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+8) #define FL_GTK_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+9) // conversions of box types to other boxtypes: /** Get the filled version of a frame. If no filled version of a given frame exists, the behavior of this function is undefined and some random box or frame is returned, */ inline Fl_Boxtype fl_box(Fl_Boxtype b) { return (Fl_Boxtype)((b1)?b:(b-2)); } /** Get the "pressed" or "down" version of a box. If no "down" version of a given box exists, the behavior of this function is undefined and some random box or frame is returned, */ inline Fl_Boxtype fl_down(Fl_Boxtype b) { return (Fl_Boxtype)((b Fl_Color => 0xrrggbbii | | | | | | | +--- index between 0 and 255 | | +----- blue color component (8 bit) | +------- green component (8 bit) +--------- red component (8 bit) A color can have either an index or an rgb value. Colors with rgb set and an index >0 are reserved for special use. */ typedef unsigned int Fl_Color; // Standard colors. These are used as default colors in widgets and altered as necessary const Fl_Color FL_FOREGROUND_COLOR = 0; ///< the default foreground color (0) used for labels and text const Fl_Color FL_BACKGROUND2_COLOR = 7; ///< the default background color for text, list, and valuator widgets const Fl_Color FL_INACTIVE_COLOR = 8; ///< the inactive foreground color const Fl_Color FL_SELECTION_COLOR = 15; ///< the default selection/highlight color // boxtypes generally limit themselves to these colors so // the whole ramp is not allocated: const Fl_Color FL_GRAY0 = 32; // 'A' const Fl_Color FL_DARK3 = 39; // 'H' const Fl_Color FL_DARK2 = 45; // 'N' const Fl_Color FL_DARK1 = 47; // 'P' const Fl_Color FL_BACKGROUND_COLOR = 49; // 'R' default background color const Fl_Color FL_LIGHT1 = 50; // 'S' const Fl_Color FL_LIGHT2 = 52; // 'U' const Fl_Color FL_LIGHT3 = 54; // 'W' // FLTK provides a 5x8x5 color cube that is used with colormap visuals const Fl_Color FL_BLACK = 56; const Fl_Color FL_RED = 88; const Fl_Color FL_GREEN = 63; const Fl_Color FL_YELLOW = 95; const Fl_Color FL_BLUE = 216; const Fl_Color FL_MAGENTA = 248; const Fl_Color FL_CYAN = 223; const Fl_Color FL_DARK_RED = 72; const Fl_Color FL_DARK_GREEN = 60; const Fl_Color FL_DARK_YELLOW = 76; const Fl_Color FL_DARK_BLUE = 136; const Fl_Color FL_DARK_MAGENTA = 152; const Fl_Color FL_DARK_CYAN = 140; const Fl_Color FL_WHITE = 255; #define FL_FREE_COLOR (Fl_Color)16 #define FL_NUM_FREE_COLOR 16 #define FL_GRAY_RAMP (Fl_Color)32 #define FL_NUM_GRAY 24 #define FL_GRAY FL_BACKGROUND_COLOR #define FL_COLOR_CUBE (Fl_Color)56 #define FL_NUM_RED 5 #define FL_NUM_GREEN 8 #define FL_NUM_BLUE 5 FL_EXPORT Fl_Color fl_inactive(Fl_Color c); FL_EXPORT Fl_Color fl_contrast(Fl_Color fg, Fl_Color bg); FL_EXPORT Fl_Color fl_color_average(Fl_Color c1, Fl_Color c2, float weight); inline Fl_Color fl_lighter(Fl_Color c) { return fl_color_average(c, FL_WHITE, .67f); } inline Fl_Color fl_darker(Fl_Color c) { return fl_color_average(c, FL_BLACK, .67f); } /** return 24-bit color value closest to \p r, \p g, \p b. */ inline Fl_Color fl_rgb_color(uchar r, uchar g, uchar b) { if (!r && !g && !b) return FL_BLACK; else return (Fl_Color)(((((r << 8) | g) << 8) | b) << 8); } /** return 24-bit color value closest to \p grayscale */ inline Fl_Color fl_rgb_color(uchar g) { if (!g) return FL_BLACK; else return (Fl_Color)(((((g << 8) | g) << 8) | g) << 8); } inline Fl_Color fl_gray_ramp(int i) {return (Fl_Color)(i+FL_GRAY_RAMP);} inline Fl_Color fl_color_cube(int r, int g, int b) { return (Fl_Color)((b*FL_NUM_RED + r) * FL_NUM_GREEN + g + FL_COLOR_CUBE);} //*@}*/ // group: Colors /** \name Cursors The following constants define the mouse cursors that are available in FLTK. The double-headed arrows are bitmaps provided by FLTK on X, the others are provided by system-defined cursors. \todo enum Fl_Cursor needs some more comments for values (and maybe an image), see Fl/Enumerations.H */ enum Fl_Cursor { // standard cursors FL_CURSOR_DEFAULT = 0, FL_CURSOR_ARROW = 35, FL_CURSOR_CROSS = 66, FL_CURSOR_WAIT = 76, FL_CURSOR_INSERT = 77, FL_CURSOR_HAND = 31, FL_CURSOR_HELP = 47, FL_CURSOR_MOVE = 27, // fltk provides bitmaps for these: FL_CURSOR_NS = 78, FL_CURSOR_WE = 79, FL_CURSOR_NWSE = 80, FL_CURSOR_NESW = 81, FL_CURSOR_NONE = 255, // for back compatability (non MSWindows ones): FL_CURSOR_N = 70, FL_CURSOR_NE = 69, FL_CURSOR_E = 49, FL_CURSOR_SE = 8, FL_CURSOR_S = 9, FL_CURSOR_SW = 7, FL_CURSOR_W = 36, FL_CURSOR_NW = 68 //FL_CURSOR_NS = 22, //FL_CURSOR_WE = 55, }; enum { // values for "when" passed to Fl::add_fd() FL_READ = 1, FL_WRITE = 4, FL_EXCEPT = 8 }; enum Fl_Mode { // visual types and Fl_Gl_Window::mode() (values match Glut) FL_RGB = 0, FL_INDEX = 1, FL_SINGLE = 0, FL_DOUBLE = 2, FL_ACCUM = 4, FL_ALPHA = 8, FL_DEPTH = 16, FL_STENCIL = 32, FL_RGB8 = 64, FL_MULTISAMPLE= 128, FL_STEREO = 256, FL_FAKE_SINGLE = 512 // Fake single buffered windows using double-buffer }; // image alpha blending #define FL_IMAGE_WITH_ALPHA 0x40000000 // damage masks enum Fl_Damage { FL_DAMAGE_CHILD = 0x01, FL_DAMAGE_EXPOSE = 0x02, FL_DAMAGE_SCROLL = 0x04, FL_DAMAGE_OVERLAY = 0x08, FL_DAMAGE_USER1 = 0x10, FL_DAMAGE_USER2 = 0x20, FL_DAMAGE_ALL = 0x80 }; // FLTK 1.0.x compatibility definitions... # ifdef FLTK_1_0_COMPAT # define contrast fl_contrast # define down fl_down # define frame fl_frame # define inactive fl_inactive # endif // FLTK_1_0_COMPAT #endif // // End of "$Id: Enumerations.H 6902 2009-09-27 11:06:56Z matt$". // 

Added fltk-1.3/FL/Fl.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046  // // "$Id: Fl.H 6903 2009-09-27 11:09:03Z matt$" // // Main header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl static class. */ #ifndef Fl_H # define Fl_H #ifdef HAVE_CAIRO # include #endif # include "fl_utf8.h" # include "Enumerations.H" # ifndef Fl_Object # define Fl_Object Fl_Widget /**< for back compatibility - use Fl_Widget! */ # endif # ifdef check # undef check # endif class Fl_Widget; class Fl_Window; class Fl_Image; struct Fl_Label; /** signature of some label drawing functions passed as parameters */ typedef void (Fl_Label_Draw_F)(const Fl_Label*, int,int,int,int, Fl_Align); /** signature of some label measurement functions passed as parameters */ typedef void (Fl_Label_Measure_F)(const Fl_Label*, int&, int&); /** signature of some box drawing functions passed as parameters */ typedef void (Fl_Box_Draw_F)(int,int,int,int, Fl_Color); /** signature of some timeout callback functions passed as parameters */ typedef void (*Fl_Timeout_Handler)(void*); /** signature of some wakeup callback functions passed as parameters */ typedef void (*Fl_Awake_Handler)(void*); /** The Fl is the FLTK global (static) containing state information and global methods for the current application. */ class FL_EXPORT Fl { Fl() {}; // no constructor! public: // should be private! #ifndef FL_DOXYGEN static int e_number; static int e_x; static int e_y; static int e_x_root; static int e_y_root; static int e_dx; static int e_dy; static int e_state; static int e_clicks; static int e_is_click; static int e_keysym; static char* e_text; static int e_length; static Fl_Widget* belowmouse_; static Fl_Widget* pushed_; static Fl_Widget* focus_; static int damage_; static Fl_Widget* selection_owner_; static Fl_Window* modal_; static Fl_Window* grab_; static int compose_state; static int visible_focus_; static int dnd_text_ops_; #endif /** If true then flush() will do something. */ static void damage(int d) {damage_ = d;} /** The currently executing idle callback function: DO NOT USE THIS DIRECTLY! This is now used as part of a higher level system allowing multiple idle callback functions to be called. \see add_idle(), remove_idle() */ static void (*idle)(); #ifndef FL_DOXYGEN static Fl_Awake_Handler *awake_ring_; static void **awake_data_; static int awake_ring_size_; static int awake_ring_head_; static int awake_ring_tail_; static const char* scheme_; static Fl_Image* scheme_bg_; static int e_original_keysym; // late addition static int scrollbar_size_; #endif static int add_awake_handler_(Fl_Awake_Handler, void*); static int get_awake_handler_(Fl_Awake_Handler&, void*&); public: // API version number static double version(); // argument parsers: static int arg(int, char**, int&); static int args(int, char**, int&, int (*)(int,char**,int&) = 0); static void args(int, char**); /** Usage string displayed if Fl::args() detects an invalid argument. This may be changed to point to customized text at run-time. */ static const char* const help; // things called by initialization: static void display(const char*); static int visual(int); /** This does the same thing as Fl::visual(int) but also requires OpenGL drawing to work. This must be done if you want to draw in normal windows with OpenGL with gl_start() and gl_end(). It may be useful to call this so your X windows use the same visual as an Fl_Gl_Window, which on some servers will reduce colormap flashing. See Fl_Gl_Window for a list of additional values for the argument. */ static int gl_visual(int, int *alist=0); // platform dependent static void own_colormap(); static void get_system_colors(); static void foreground(uchar, uchar, uchar); static void background(uchar, uchar, uchar); static void background2(uchar, uchar, uchar); // schemes: static int scheme(const char*); /** See void scheme(const char *name) */ static const char* scheme() {return scheme_;} /** Called by scheme according to scheme name. Loads or reloads the current scheme selection. See void scheme(const char *name) */ static int reload_scheme(); // platform dependent static int scrollbar_size(); static void scrollbar_size(int W); // execution: static int wait(); static double wait(double time); static int check(); static int ready(); static int run(); static Fl_Widget* readqueue(); /** Adds a one-shot timeout callback. The function will be called by Fl::wait() at t seconds after this function is called. The optional void* argument is passed to the callback. You can have multiple timeout callbacks. To remove a timeout callback use Fl::remove_timeout(). If you need more accurate, repeated timeouts, use Fl::repeat_timeout() to reschedule the subsequent timeouts. The following code will print "TICK" each second on stdout with a fair degree of accuracy: \code void callback(void*) { puts("TICK"); Fl::repeat_timeout(1.0, callback); } int main() { Fl::add_timeout(1.0, callback); return Fl::run(); } \endcode */ static void add_timeout(double t, Fl_Timeout_Handler,void* = 0); // platform dependent /** Repeats a timeout callback from the expiration of the previous timeout, allowing for more accurate timing. You may only call this method inside a timeout callback. The following code will print "TICK" each second on stdout with a fair degree of accuracy: \code void callback(void*) { puts("TICK"); Fl::repeat_timeout(1.0, callback); } int main() { Fl::add_timeout(1.0, callback); return Fl::run(); } \endcode */ static void repeat_timeout(double t, Fl_Timeout_Handler,void* = 0); // platform dependent static int has_timeout(Fl_Timeout_Handler, void* = 0); static void remove_timeout(Fl_Timeout_Handler, void* = 0); static void add_check(Fl_Timeout_Handler, void* = 0); static int has_check(Fl_Timeout_Handler, void* = 0); static void remove_check(Fl_Timeout_Handler, void* = 0); /** Adds file descriptor fd to listen to. When the fd becomes ready for reading Fl::wait() will call the callback and then return. The callback is passed the fd and the arbitrary void* argument. The second version takes a when bitfield, with the bits FL_READ, FL_WRITE, and FL_EXCEPT defined, to indicate when the callback should be done. There can only be one callback of each type for a file descriptor. Fl::remove_fd() gets rid of all the callbacks for a given file descriptor. Under UNIX any file descriptor can be monitored (files, devices, pipes, sockets, etc.). Due to limitations in Microsoft Windows, WIN32 applications can only monitor sockets. */ static void add_fd(int fd, int when, void (*cb)(int,void*),void* =0); // platform dependent /** See void add_fd(int fd, int when, void (*cb)(int,void*),void* =0) */ static void add_fd(int fd, void (*cb)(int, void*), void* = 0); // platform dependent /** Removes a file descriptor handler. */ static void remove_fd(int, int when); // platform dependent /** Removes a file descriptor handler. */ static void remove_fd(int); // platform dependent static void add_idle(void (*cb)(void*), void* data = 0); static int has_idle(void (*cb)(void*), void* data = 0); static void remove_idle(void (*cb)(void*), void* data = 0); /** If true then flush() will do something. */ static int damage() {return damage_;} static void redraw(); static void flush(); /** \addtogroup group_comdlg @{ */ /** FLTK calls Fl::warning() to output a warning message. The default version on Windows returns \e without printing a warning message, because Windows programs normally don't have stderr (a console window) enabled. The default version on all other platforms prints the warning message to stderr. You can override the behavior by setting the function pointer to your own routine. Fl::warning() means that there was a recoverable problem, the display may be messed up, but the user can probably keep working - all X protocol errors call this, for example. The default implementation returns after displaying the message. */ static void (*warning)(const char*, ...); /** FLTK calls Fl::error() to output a normal error message. The default version on Windows displays the error message in a MessageBox window. The default version on all other platforms prints the error message to stderr. You can override the behavior by setting the function pointer to your own routine. Fl::error() means there is a recoverable error such as the inability to read an image file. The default implementation returns after displaying the message. */ static void (*error)(const char*, ...); /** FLTK calls Fl::fatal() to output a fatal error message. The default version on Windows displays the error message in a MessageBox window. The default version on all other platforms prints the error message to stderr. You can override the behavior by setting the function pointer to your own routine. Fl::fatal() must not return, as FLTK is in an unusable state, however your version may be able to use longjmp or an exception to continue, as long as it does not call FLTK again. The default implementation exits with status 1 after displaying the message. */ static void (*fatal)(const char*, ...); /** @} */ /** \defgroup fl_windows Windows handling functions Windows and standard dialogs handling @{ */ static Fl_Window* first_window(); static void first_window(Fl_Window*); static Fl_Window* next_window(const Fl_Window*); /** Returns the top-most modal() window currently shown. This is the most recently shown() window with modal() true, or NULL if there are no modal() windows shown(). The modal() window has its handle() method called for all events, and no other windows will have handle() called (grab() overrides this). */ static Fl_Window* modal() {return modal_;} /** This is used when pop-up menu systems are active. Send all events to the passed window no matter where the pointer or focus is (including in other programs). The window does not have to be shown() , this lets the handle() method of a "dummy" window override all event handling and allows you to map and unmap a complex set of windows (under both X and WIN32 some window must be mapped because the system interface needs a window id). If grab() is on it will also affect show() of windows by doing system-specific operations (on X it turns on override-redirect). These are designed to make menus popup reliably and faster on the system. To turn off grabbing do Fl::grab(0). Be careful that your program does not enter an infinite loop while grab() is on. On X this will lock up your screen! To avoid this potential lockup, all newer operating systems seem to limit mouse pointer grabbing to the time during which a mouse button is held down. Some OS's may not support grabbing at all. */ static Fl_Window* grab() {return grab_;} /** Selects the window to grab. See Fl_Window* Fl::grab() */ static void grab(Fl_Window*); // platform dependent /** @} */ /** \defgroup fl_events Events handling functions Fl class events handling API @{ */ // event information: /** Returns the last event that was processed. This can be used to determine if a callback is being done in response to a keypress, mouse click, etc. */ static int event() {return e_number;} /** Returns the mouse position of the event relative to the Fl_Window it was passed to. */ static int event_x() {return e_x;} /** Returns the mouse position of the event relative to the Fl_Window it was passed to. */ static int event_y() {return e_y;} /** Returns the mouse position on the screen of the event. To find the absolute position of an Fl_Window on the screen, use the difference between event_x_root(),event_y_root() and event_x(),event_y(). */ static int event_x_root() {return e_x_root;} /** Returns the mouse position on the screen of the event. To find the absolute position of an Fl_Window on the screen, use the difference between event_x_root(),event_y_root() and event_x(),event_y(). */ static int event_y_root() {return e_y_root;} /** Returns the current horizontal mouse scrolling associated with the FL_MOUSEWHEEL event. Right is positive. */ static int event_dx() {return e_dx;} /** Returns the current vertical mouse scrolling associated with the FL_MOUSEWHEEL event. Down is positive. */ static int event_dy() {return e_dy;} /** Return where the mouse is on the screen by doing a round-trip query to the server. You should use Fl::event_x_root() and Fl::event_y_root() if possible, but this is necessary if you are not sure if a mouse event has been processed recently (such as to position your first window). If the display is not open, this will open it. */ static void get_mouse(int &,int &); // platform dependent /** Returns non zero if we had a double click event. \retval Non-zero if the most recent FL_PUSH or FL_KEYBOARD was a "double click". \retval N-1 for N clicks. A double click is counted if the same button is pressed again while event_is_click() is true. */ static int event_clicks() {return e_clicks;} /** Manually sets the number returned by Fl::event_clicks(). This can be used to set it to zero so that later code does not think an item was double-clicked. \param[in] i corresponds to no double-click if 0, i+1 mouse clicks otherwise \see int event_clicks() */ static void event_clicks(int i) {e_clicks = i;} /** The first form returns non-zero if the mouse has not moved far enough and not enough time has passed since the last FL_PUSH or FL_KEYBOARD event for it to be considered a "drag" rather than a "click". You can test this on FL_DRAG, FL_RELEASE, and FL_MOVE events. The second form clears the value returned by Fl::event_is_click(). Useful to prevent the next click from being counted as a double-click or to make a popup menu pick an item with a single click. Don't pass non-zero to this. */ static int event_is_click() {return e_is_click;} /** Only i=0 works! See int event_is_click(). */ static void event_is_click(int i) {e_is_click = i;} /** Gets which particular mouse button caused the current event. This returns garbage if the most recent event was not a FL_PUSH or FL_RELEASE event. \retval FL_LEFT_MOUSE \retval FL_MIDDLE_MOUSE \retval FL_RIGHT_MOUSE. \see Fl::event_buttons() */ static int event_button() {return e_keysym-FL_Button;} /** This is a bitfield of what shift states were on and what mouse buttons were held down during the most recent event. The second version returns non-zero if any of the passed bits are turned on. The legal bits are: \li FL_SHIFT \li FL_CAPS_LOCK \li FL_CTRL \li FL_ALT \li FL_NUM_LOCK \li FL_META \li FL_SCROLL_LOCK \li FL_BUTTON1 \li FL_BUTTON2 \li FL_BUTTON3 X servers do not agree on shift states, and FL_NUM_LOCK, FL_META, and FL_SCROLL_LOCK may not work. The values were selected to match the XFree86 server on Linux. In addition there is a bug in the way X works so that the shift state is not correctly reported until the first event after the shift key is pressed or released. */ static int event_state() {return e_state;} /** See int event_state() */ static int event_state(int i) {return e_state&i;} /** Gets which key on the keyboard was last pushed. The returned integer 'key code' is not necessarily a text equivalent for the keystroke. For instance: if someone presses '5' on the numeric keypad with numlock on, Fl::event_key() may return the 'key code' for this key, and NOT the character '5'. To always get the '5', use Fl::event_text() instead. \returns an integer 'key code', or 0 if the last event was not a key press or release. \see int event_key(int), event_text(), compose(int&). */ static int event_key() {return e_keysym;} /** Returns the keycode of the last key event, regardless of the NumLock state. If NumLock is deactivated, FLTK translates events from the numeric keypad into the corresponding arrow key events. event_key() returns the translated key code, whereas event_original_key() returns the keycode before NumLock translation. */ static int event_original_key(){return e_original_keysym;} /** Returns true if the given \p key was held down (or pressed) during the last event. This is constant until the next event is read from the server. Fl::get_key(int) returns true if the given key is held down now. Under X this requires a round-trip to the server and is much slower than Fl::event_key(int). Keys are identified by the unshifted values. FLTK defines a set of symbols that should work on most modern machines for every key on the keyboard: \li All keys on the main keyboard producing a printable ASCII character use the value of that ASCII character (as though shift, ctrl, and caps lock were not on). The space bar is 32. \li All keys on the numeric keypad producing a printable ASCII character use the value of that ASCII character plus FL_KP. The highest possible value is FL_KP_Last so you can range-check to see if something is on the keypad. \li All numbered function keys use the number on the function key plus FL_F. The highest possible number is FL_F_Last, so you can range-check a value. \li Buttons on the mouse are considered keys, and use the button number (where the left button is 1) plus FL_Button. \li All other keys on the keypad have a symbol: FL_Escape, FL_BackSpace, FL_Tab, FL_Enter, FL_Print, FL_Scroll_Lock, FL_Pause, FL_Insert, FL_Home, FL_Page_Up, FL_Delete, FL_End, FL_Page_Down, FL_Left, FL_Up, FL_Right, FL_Down, FL_Shift_L, FL_Shift_R, FL_Control_L, FL_Control_R, FL_Caps_Lock, FL_Alt_L, FL_Alt_R, FL_Meta_L, FL_Meta_R, FL_Menu, FL_Num_Lock, FL_KP_Enter. Be careful not to confuse these with the very similar, but all-caps, symbols used by Fl::event_state(). On X Fl::get_key(FL_Button+n) does not work. On WIN32 Fl::get_key(FL_KP_Enter) and Fl::event_key(FL_KP_Enter) do not work. */ static int event_key(int key); /** Returns true if the given \p key is held down now. Under X this requires a round-trip to the server and is much slower than Fl::event_key(int). \see event_key(int) */ static int get_key(int key); // platform dependent /** Returns the text associated with the current event, including FL_PASTE or FL_DND_RELEASE events. This can be used in response to FL_KEYUP, FL_KEYDOWN, FL_PASTE, FL_DND_RELEASE. When responding to FL_KEYUP/FL_KEYDOWN, use this function instead of Fl::event_key() to get the text equivalent of keystrokes suitable for inserting into strings and text widgets. The returned string is guaranteed to be be NULL terminated. However, see Fl::event_length() for the actual length of the string, in case the string itself contains NULLs that are part of the text data. \returns A NULL terminated text string equivalent of the last keystroke. */ static const char* event_text() {return e_text;} /** Returns the length of the text in Fl::event_text(). There will always be a nul at this position in the text. However there may be a nul before that if the keystroke translates to a nul character or you paste a nul character. */ static int event_length() {return e_length;} static int compose(int &del); /** If the user moves the cursor, be sure to call Fl::compose_reset(). The next call to Fl::compose() will start out in an initial state. In particular it will not set "del" to non-zero. This call is very fast so it is ok to call it many times and in many places. */ static void compose_reset() {compose_state = 0;} static int event_inside(int,int,int,int); static int event_inside(const Fl_Widget*); static int test_shortcut(Fl_Shortcut); // event destinations: static int handle(int, Fl_Window*); /** Gets the widget that is below the mouse. \see belowmouse(Fl_Widget*) */ static Fl_Widget* belowmouse() {return belowmouse_;} static void belowmouse(Fl_Widget*); /** Gets the widget that is being pushed. \see void pushed(Fl_Widget*) */ static Fl_Widget* pushed() {return pushed_;} static void pushed(Fl_Widget*); /** Gets the current Fl::focus() widget. \sa Fl::focus(Fl_Widget*) */ static Fl_Widget* focus() {return focus_;} static void focus(Fl_Widget*); static void add_handler(int (*h)(int)); static void remove_handler(int (*h)(int)); /** @} */ /** \defgroup fl_clipboard Selection & Clipboard functions fl global copy/cut/paste functions @{ */ // cut/paste: /** Copies the data pointed to by \p stuff to the selection (0) or primary (1) clipboard. The selection clipboard is used for middle-mouse pastes and for drag-and-drop selections. The primary clipboard is used for traditional copy/cut/paste operations. */ static void copy(const char* stuff, int len, int clipboard = 0); // platform dependent /** Pastes the data from the selection (0) or primary (1) clipboard into receiver. The selection clipboard is used for middle-mouse pastes and for drag-and-drop selections. The primary clipboard is used for traditional copy/cut/paste operations. */ static void paste(Fl_Widget &receiver, int clipboard /*=0*/); // platform dependent /** Initiate a Drag And Drop operation. The clipboard should be filled with relevant data before calling this method. FLTK will then initiate the system wide drag and drop handling. Dropped data will be marked as text. */ static int dnd(); // platform dependent // These are for back-compatibility only: /** back-compatibility only: Gets the widget owning the current selection \see Fl_Widget* selection_owner(Fl_Widget*) */ static Fl_Widget* selection_owner() {return selection_owner_;} static void selection_owner(Fl_Widget*); static void selection(Fl_Widget &owner, const char*, int len); static void paste(Fl_Widget &receiver); /** @} */ /** \defgroup fl_screen Screen functions fl global screen functions @{ */ // screen size: /** Returns the origin of the current screen, where 0 indicates the left side of the screen. */ static int x(); // platform dependent /** Returns the origin of the current screen, where 0 indicates the top edge of the screen. */ static int y(); // platform dependent /** Returns the width of the screen in pixels. */ static int w(); // platform dependent /** Returns the height of the screen in pixels. */ static int h(); // platform dependent // multi-head support: static int screen_count(); /** Gets the bounding box of a screen that contains the mouse pointer. \param[out] X,Y,W,H the corresponding screen bounding box \see void screen_xywh(int &x, int &y, int &w, int &h, int mx, int my) */ static void screen_xywh(int &X, int &Y, int &W, int &H) { screen_xywh(X, Y, W, H, e_x_root, e_y_root); } static void screen_xywh(int &X, int &Y, int &W, int &H, int mx, int my); static void screen_xywh(int &X, int &Y, int &W, int &H, int n); /** @} */ /** \defgroup fl_attributes Color & Font functions fl global color, font functions @{ */ // color map: static void set_color(Fl_Color, uchar, uchar, uchar); /** Sets an entry in the fl_color index table. You can set it to any 8-bit RGB color. The color is not allocated until fl_color(i) is used. */ static void set_color(Fl_Color, unsigned); // platform dependent static Fl_Color get_color(Fl_Color); static void get_color(Fl_Color, uchar&, uchar&, uchar&); /** Frees the specified color from the colormap, if applicable. If overlay is non-zero then the color is freed from the overlay colormap. */ static void free_color(Fl_Color, int overlay = 0); // platform dependent // fonts: static const char* get_font(Fl_Font); /** Get a human-readable string describing the family of this face. This is useful if you are presenting a choice to the user. There is no guarantee that each face has a different name. The return value points to a static buffer that is overwritten each call. The integer pointed to by \p attributes (if the pointer is not zero) is set to zero, FL_BOLD or FL_ITALIC or FL_BOLD | FL_ITALIC. To locate a "family" of fonts, search forward and back for a set with non-zero attributes, these faces along with the face with a zero attribute before them constitute a family. */ static const char* get_font_name(Fl_Font, int* attributes = 0); /** Return an array of sizes in \p sizep. The return value is the length of this array. The sizes are sorted from smallest to largest and indicate what sizes can be given to fl_font() that will be matched exactly (fl_font() will pick the closest size for other sizes). A zero in the first location of the array indicates a scalable font, where any size works, although the array may list sizes that work "better" than others. Warning: the returned array points at a static buffer that is overwritten each call. Under X this will open the display. */ static int get_font_sizes(Fl_Font, int*& sizep); static void set_font(Fl_Font, const char*); static void set_font(Fl_Font, Fl_Font); /** FLTK will open the display, and add every fonts on the server to the face table. It will attempt to put "families" of faces together, so that the normal one is first, followed by bold, italic, and bold italic. The optional argument is a string to describe the set of fonts to add. Passing NULL will select only fonts that have the ISO8859-1 character set (and are thus usable by normal text). Passing "-*" will select all fonts with any encoding as long as they have normal X font names with dashes in them. Passing "*" will list every font that exists (on X this may produce some strange output). Other values may be useful but are system dependent. With WIN32 NULL selects fonts with ISO8859-1 encoding and non-NULL selects all fonts. The return value is how many faces are in the table after this is done. */ static Fl_Font set_fonts(const char* = 0); // platform dependent /** @} */ /** \defgroup fl_drawings Drawing functions fl global graphics and gui drawing functions @{ */ // /** @} */ // labeltypes: static void set_labeltype(Fl_Labeltype,Fl_Label_Draw_F*,Fl_Label_Measure_F*); /** Sets the functions to call to draw and measure a specific labeltype. */ static void set_labeltype(Fl_Labeltype, Fl_Labeltype from); // is it defined ? // boxtypes: static Fl_Box_Draw_F *get_boxtype(Fl_Boxtype); static void set_boxtype(Fl_Boxtype, Fl_Box_Draw_F*,uchar,uchar,uchar,uchar); static void set_boxtype(Fl_Boxtype, Fl_Boxtype from); static int box_dx(Fl_Boxtype); static int box_dy(Fl_Boxtype); static int box_dw(Fl_Boxtype); static int box_dh(Fl_Boxtype); static int draw_box_active(); // back compatibility: /** \addtogroup fl_windows @{ */ /** For back compatibility, sets the void Fl::fatal handler callback */ static void set_abort(void (*f)(const char*,...)) {fatal = f;} static void (*atclose)(Fl_Window*,void*); static void default_atclose(Fl_Window*,void*); /** For back compatibility, sets the Fl::atclose handler callback. You can now simply change the callback for the window instead. \see Fl_Window::callback(Fl_Callback*) */ static void set_atclose(void (*f)(Fl_Window*,void*)) {atclose = f;} /** @} */ /** \addtogroup fl_events @{ */ /** Returns non-zero if the Shift key is pressed. */ static int event_shift() {return e_state&FL_SHIFT;} /** Returns non-zero if the Control key is pressed. */ static int event_ctrl() {return e_state&FL_CTRL;} /** Returns non-zero if the Alt key is pressed. */ static int event_alt() {return e_state&FL_ALT;} /** Returns the mouse buttons state bits; if non-zero, then at least one button is pressed now. This function returns the button state at the time of the event. During an FL_RELEASE event, the state of the released button will be 0. To find out, which button caused an FL_RELEASE event, you can use Fl::event_button() instead. \return a bit mask value like { [FL_BUTTON1] | [FL_BUTTON2] | [FL_BUTTON3] } */ static int event_buttons() {return e_state&0x7f000000;} /** Returns non-zero if mouse button 1 is currently held down. For more details, see Fl::event_buttons(). */ static int event_button1() {return e_state&FL_BUTTON1;} /** Returns non-zero if button 2 is currently held down. For more details, see Fl::event_buttons(). */ static int event_button2() {return e_state&FL_BUTTON2;} /** Returns non-zero if button 3 is currently held down. For more details, see Fl::event_buttons(). */ static int event_button3() {return e_state&FL_BUTTON3;} /** @} */ /** Sets an idle callback. \deprecated This method is obsolete - use the add_idle() method instead. */ static void set_idle(void (*cb)()) {idle = cb;} /** See Fl_Window* grab() */ static void grab(Fl_Window&win) {grab(&win);} /** Releases the current grabbed window, equals grab(0). \deprecated Use Fl::grab(0) instead. \see Fl_Window* grab() */ static void release() {grab(0);} // Visible focus methods... /** Gets or sets the visible keyboard focus on buttons and other non-text widgets. The default mode is to enable keyboard focus for all widgets. */ static void visible_focus(int v) { visible_focus_ = v; } /** Gets or sets the visible keyboard focus on buttons and other non-text widgets. The default mode is to enable keyboard focus for all widgets. */ static int visible_focus() { return visible_focus_; } // Drag-n-drop text operation methods... /** Gets or sets whether drag and drop text operations are supported. This specifically affects whether selected text can be dragged from text fields or dragged within a text field as a cut/paste shortcut. */ static void dnd_text_ops(int v) { dnd_text_ops_ = v; } /** Gets or sets whether drag and drop text operations are supported. This specifically affects whether selected text can be dragged from text fields or dragged within a text field as a cut/paste shortcut. */ static int dnd_text_ops() { return dnd_text_ops_; } /** \defgroup fl_multithread Multithreading support functions fl multithreading support functions @{ */ // Multithreading support: static void lock(); static void unlock(); static void awake(void* message = 0); /** See void awake(void* message=0). */ static int awake(Fl_Awake_Handler cb, void* message = 0); /** The thread_message() method returns the last message that was sent from a child by the awake() method. See also: multithreading */ static void* thread_message(); // platform dependent /** @} */ /** \defgroup fl_del_widget Safe widget deletion support functions These functions support deletion of widgets inside callbacks. Fl::delete_widget() should be called when deleting widgets or complete widget trees (Fl_Group, Fl_Window, ...) inside callbacks. The other functions are intended for internal use. The preferred way to use them is by using the helper class Fl_Widget_Tracker. The following is to show how it works ... There are three groups of related methods: -# scheduled widget deletion - Fl::delete_widget() schedules widgets for deletion - Fl::do_widget_deletion() deletes all scheduled widgets -# widget watch list ("smart pointers") - Fl::watch_widget_pointer() adds a widget pointer to the watch list - Fl::release_widget_pointer() removes a widget pointer from the watch list - Fl::clear_widget_pointer() clears a widget pointer \e in the watch list -# the class Fl_Widget_Tracker: - the constructor calls Fl::watch_widget_pointer() - the destructor calls Fl::release_widget_pointer() - the access methods can be used to test, if a widget has been deleted \see Fl_Widget_Tracker. @{ */ // Widget deletion: static void delete_widget(Fl_Widget *w); static void do_widget_deletion(); static void watch_widget_pointer(Fl_Widget *&w); static void release_widget_pointer(Fl_Widget *&w); static void clear_widget_pointer(Fl_Widget const *w); /** @} */ #ifdef HAVE_CAIRO /** \defgroup group_cairo Cairo support functions and classes @{ */ public: // Cairo support API static cairo_t * cairo_make_current(Fl_Window* w); /** when HAVE_CAIRO is defined and cairo_autolink_context() is true, any current window dc is linked to a current context. This is not the default, because it may not be necessary to add cairo support to all fltk supported windows. When you wish to associate a cairo context in this mode, you need to call explicitly in your draw() overridden method, FL::cairo_make_current(Fl_Window*). This will create a cairo context but only for this Window. Still in custom cairo application it is possible to handle completely this process automatically by setting \p alink to true. In this last case, you don't need anymore to call Fl::cairo_make_current(). You can use Fl::cairo_cc() to get the current cairo context anytime. \note Only available when configure has the --enable-cairo option */ static void cairo_autolink_context(bool alink) {cairo_state_.autolink(alink);} /** Gets the current autolink mode for cairo support. \retval false if no cairo context autolink is made for each window. \retval true if any fltk window is attached a cairo context when it is current. \see void cairo_autolink_context(bool alink) \note Only available when configure has the --enable-cairo option */ static bool cairo_autolink_context() {return cairo_state_.autolink();} /** Gets the current cairo context linked with a fltk window. */ static cairo_t * cairo_cc() { return cairo_state_.cc(); } /** Sets the current cairo context to \p c. Set \p own to true if you want fltk to handle this cc deletion. \note Only available when configure has the --enable-cairo option */ static void cairo_cc(cairo_t * c, bool own=false){ cairo_state_.cc(c, own); } private: static cairo_t * cairo_make_current(void* gc); static cairo_t * cairo_make_current(void* gc, int W, int H); static Fl_Cairo_State cairo_state_; public: /** @} */ #endif // HAVE_CAIRO }; /** This class should be used to control safe widget deletion. You can use an Fl_Widget_Tracker object to watch another widget, if you need to know, if this widget has been deleted during a callback. This simplifies the use of the "safe widget deletion" methods Fl::watch_widget_pointer() and Fl::release_widget_pointer() and makes their use more reliable, because the destructor autmatically releases the widget pointer from the widget watch list. It is intended to be used as an automatic (local/stack) variable, such that the automatic destructor is called when the object's scope is left. This ensures that no stale widget pointers are left in the widget watch list (see example below). You can also create Fl_Widget_Tracker objects with \c new, but then it is your responsibility to delete the object (and thus remove the widget pointer from the watch list) when it is not needed any more. Example: \code int MyClass::handle (int event) { if (...) { Fl_Widget_Tracker wp(this); // watch myself do_callback(); // call the callback if (wp.deleted()) return 1; // exit, if deleted // Now we are sure that the widget has not been deleted. // It is safe to access the widget clear_changed(); // access the widget } } \endcode */ class FL_EXPORT Fl_Widget_Tracker { Fl_Widget* wp_; public: Fl_Widget_Tracker(Fl_Widget *wi); ~Fl_Widget_Tracker(); /** Returns a pointer to the watched widget. This pointer is \c NULL, if the widget has been deleted. */ Fl_Widget *widget() {return wp_;} /** Returns 1, if the watched widget has been deleted. This is a convenience method. You can also use something like if (wp.widget() == 0) // ... where \p wp is an Fl_Widget_Tracker object. */ int deleted() {return wp_ == 0;} /** Returns 1, if the watched widget exists (has not been deleted). This is a convenience method. You can also use something like if (wp.widget() != 0) // ... where \p wp is an Fl_Widget_Tracker object. */ int exists() {return wp_ != 0;} }; /** \defgroup fl_unicode Unicode and UTF-8 functions fl global Unicode and UTF-8 handling functions @{ */ /** @} */ #endif // !Fl_H // // End of "$Id: Fl.H 6903 2009-09-27 11:09:03Z matt$". // 

Added fltk-1.3/FL/Fl_Adjuster.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82  // // "$Id: Fl_Adjuster.H 6614 2009-01-01 16:11:32Z matt$" // // Adjuster widget header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Adjuster widget . */ // 3-button "slider", made for Nuke #ifndef Fl_Adjuster_H #define Fl_Adjuster_H #ifndef Fl_Valuator_H #include "Fl_Valuator.H" #endif /** The Fl_Adjuster widget was stolen from Prisms, and has proven to be very useful for values that need a large dynamic range. \image html adjuster1.gif \image latex adjuster1.eps "Fl_Adjuster" width=4cm

When you press a button and drag to the right the value increases. When you drag to the left it decreases. The largest button adjusts by 100 * step(), the next by 10 * step() and that smallest button by step(). Clicking on the buttons increments by 10 times the amount dragging by a pixel does. Shift + click decrements by 10 times the amount. */ class FL_EXPORT Fl_Adjuster : public Fl_Valuator { int drag; int ix; int soft_; protected: void draw(); int handle(int); void value_damage(); public: Fl_Adjuster(int X,int Y,int W,int H,const char *l=0); /** If "soft" is turned on, the user is allowed to drag the value outside the range. If they drag the value to one of the ends, let go, then grab again and continue to drag, they can get to any value. Default is one. */ void soft(int s) {soft_ = s;} /** If "soft" is turned on, the user is allowed to drag the value outside the range. If they drag the value to one of the ends, let go, then grab again and continue to drag, they can get to any value. Default is one. */ int soft() const {return soft_;} }; #endif // // End of "$Id: Fl_Adjuster.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_BMP_Image.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50  // // "$Id: Fl_BMP_Image.H 6614 2009-01-01 16:11:32Z matt$" // // BMP image header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_BMP_Image widget . */ #ifndef Fl_BMP_Image_H #define Fl_BMP_Image_H # include "Fl_Image.H" /** The Fl_BMP_Image class supports loading, caching, and drawing of Windows Bitmap (BMP) image files. */ class FL_EXPORT Fl_BMP_Image : public Fl_RGB_Image { public: Fl_BMP_Image(const char* filename); }; #endif // // End of "$Id: Fl_BMP_Image.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Bitmap.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76  // // "$Id: Fl_Bitmap.H 6614 2009-01-01 16:11:32Z matt$" // // Bitmap header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Bitmap widget . */ #ifndef Fl_Bitmap_H #define Fl_Bitmap_H # include "Fl_Image.H" class Fl_Widget; struct Fl_Menu_Item; /** The Fl_Bitmap class supports caching and drawing of mono-color (bitmap) images. Images are drawn using the current color. */ class FL_EXPORT Fl_Bitmap : public Fl_Image { public: /** pointer to raw bitmap data */ const uchar *array; /** Non-zero if array points to bitmap data allocated internally */ int alloc_array; #if defined(__APPLE__) || defined(WIN32) /** for internal use */ void *id; #else /** for internal use */ unsigned id; #endif // __APPLE__ || WIN32 /** The constructors create a new bitmap from the specified bitmap data */ Fl_Bitmap(const uchar *bits, int W, int H) : Fl_Image(W,H,0), array(bits), alloc_array(0), id(0) {data((const char **)&array, 1);} /** The constructors create a new bitmap from the specified bitmap data */ Fl_Bitmap(const char *bits, int W, int H) : Fl_Image(W,H,0), array((const uchar *)bits), alloc_array(0), id(0) {data((const char **)&array, 1);} virtual ~Fl_Bitmap(); virtual Fl_Image *copy(int W, int H); Fl_Image *copy() { return copy(w(), h()); } virtual void draw(int X, int Y, int W, int H, int cx=0, int cy=0); void draw(int X, int Y) {draw(X, Y, w(), h(), 0, 0);} virtual void label(Fl_Widget*w); virtual void label(Fl_Menu_Item*m); virtual void uncache(); }; #endif // // End of "$Id: Fl_Bitmap.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Box.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69  // // "$Id: Fl_Box.H 6614 2009-01-01 16:11:32Z matt$" // // Box header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Box widget . */ #ifndef Fl_Box_H #define Fl_Box_H #ifndef Fl_Widget_H #include "Fl_Widget.H" #endif /** This widget simply draws its box, and possibly it's label. Putting it before some other widgets and making it big enough to surround them will let you draw a frame around them. */ class FL_EXPORT Fl_Box : public Fl_Widget { protected: void draw(); public: /** - The first constructor sets box() to FL_NO_BOX, which means it is invisible. However such widgets are useful as placeholders or Fl_Group::resizable() values. To change the box to something visible, use box(n). - The second form of the constructor sets the box to the specified box type.

The destructor removes the box. */ Fl_Box(int X, int Y, int W, int H, const char *l=0) : Fl_Widget(X,Y,W,H,l) {} /** See Fl_Box::Fl_Box(int x, int y, int w, int h, const char * = 0) */ Fl_Box(Fl_Boxtype b, int X, int Y, int W, int H, const char *l) : Fl_Widget(X,Y,W,H,l) {box(b);} virtual int handle(int); }; #endif // // End of "$Id: Fl_Box.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Browser.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324  // // "$Id: Fl_Browser.H 6850 2009-09-07 02:25:51Z greg.ercolano$" // // Browser header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Browser widget . */ // Forms-compatable browser. Probably useful for other // lists of textual data. Notice that the line numbers // start from 1, and 0 means "no line". #ifndef Fl_Browser_H #define Fl_Browser_H #include "Fl_Browser_.H" #include "Fl_Image.H" struct FL_BLINE; /** The Fl_Browser widget displays a scrolling list of text lines, and manages all the storage for the text. This is not a text editor or spreadsheet! But it is useful for showing a vertical list of named objects to the user. Each line in the browser is identified by number. The numbers start at one (this is so that zero can be reserved for "no line" in the selective browsers). Unless otherwise noted, the methods do not check to see if the passed line number is in range and legal. It must always be greater than zero and <= size(). Each line contains a null-terminated string of text and a void * data pointer. The text string is displayed, the void * pointer can be used by the callbacks to reference the object the text describes. The base class does nothing when the user clicks on it. The subclasses Fl_Select_Browser, Fl_Hold_Browser, and Fl_Multi_Browser react to user clicks to select lines in the browser and do callbacks. The base class Fl_Browser_ provides the scrolling and selection mechanisms of this and all the subclasses, but the dimensions and appearance of each item are determined by the subclass. You can use Fl_Browser_ to display information other than text, or text that is dynamically produced from your own data structures. If you find that loading the browser is a lot of work or is inefficient, you may want to make a subclass of Fl_Browser_. Some common coding patterns used for working with Fl_Browser: \code // How to loop through all the items in the browser for ( int t=1; t<=browser->size(); t++ ) { // index 1 based..! printf("item #%d, label='%s'\n", t, browser->text(t)); } \endcode Note: If you are subclassing Fl_Browser, it's more efficient to use the protected methods item_first() and item_next(), since Fl_Browser internally uses linked lists to manage the browser's items. For more info, see find_item(int). */ class FL_EXPORT Fl_Browser : public Fl_Browser_ { FL_BLINE *first; // the array of lines FL_BLINE *last; FL_BLINE *cache; int cacheline; // line number of cache int lines; // Number of lines int full_height_; const int* column_widths_; char format_char_; // alternative to @-sign char column_char_; // alternative to tab protected: // required routines for Fl_Browser_ subclass: void* item_first() const ; void* item_next(void* item) const ; void* item_prev(void* item) const ; void* item_last()const ; int item_selected(void* item) const ; void item_select(void* item, int val); int item_height(void* item) const ; int item_width(void* item) const ; void item_draw(void* item, int X, int Y, int W, int H) const ; int full_height() const ; int incr_height() const ; const char *item_text(void *item) const; /** Swap the items \p a and \p b. You must call redraw() to make any changes visible. \param[in] a,b the items to be swapped. \see swap(int,int), item_swap() */ void item_swap(void *a, void *b) { swap((FL_BLINE*)a, (FL_BLINE*)b); } /** Return the item at specified \p line. \param[in] line The line of the item to return. (1 based) \returns The item, or NULL if line out of range. \see item_at(), find_line(), lineno() */ void *item_at(int line) const { return (void*)find_line(line); } FL_BLINE* find_line(int line) const ; FL_BLINE* _remove(int line) ; void insert(int line, FL_BLINE* item); int lineno(void *item) const ; void swap(FL_BLINE *a, FL_BLINE *b); public: void remove(int line); void add(const char* newtext, void* d = 0); void insert(int line, const char* newtext, void* d = 0); void move(int to, int from); int load(const char* filename); void swap(int a, int b); void clear(); /** Returns how many lines are in the browser. The last line number is equal to this. Returns 0 if browser is empty. */ int size() const { return lines; } void size(int W, int H) { Fl_Widget::size(W, H); } int topline() const ; /** For internal use only? */ enum Fl_Line_Position { TOP, BOTTOM, MIDDLE }; void lineposition(int line, Fl_Line_Position pos); /** Scrolls the browser so the top item in the browser is showing the specified \p line. \param[in] line The line to be displayed at the top. \see topline(), middleline(), bottomline(), displayed(), lineposition() */ void topline(int line) { lineposition(line, TOP); } /** Scrolls the browser so the bottom item in the browser is showing the specified \p line. \param[in] line The line to be displayed at the bottom. \see topline(), middleline(), bottomline(), displayed(), lineposition() */ void bottomline(int line) { lineposition(line, BOTTOM); } /** Scrolls the browser so the middle item in the browser is showing the specified \p line. \param[in] line The line to be displayed in the middle. \see topline(), middleline(), bottomline(), displayed(), lineposition() */ void middleline(int line) { lineposition(line, MIDDLE); } int select(int line, int val=1); int selected(int line) const ; void show(int line); /** Shows the entire Fl_Browser widget -- opposite of hide(). */ void show() { Fl_Widget::show(); } void hide(int line); /** Hides the entire Fl_Browser widget -- opposite of show(). */ void hide() { Fl_Widget::hide(); } int visible(int line) const ; int value() const ; /** Sets the browser's value(), which selects the specified \p line. This is the same as calling select(line). \see select(), selected(), value(), item_select(), item_selected() */ void value(int line) { select(line); } const char* text(int line) const ; void text(int line, const char* newtext); void* data(int line) const ; void data(int line, void* d); Fl_Browser(int X, int Y, int W, int H, const char *L = 0); /** The destructor deletes all list items and destroys the browser. */ ~Fl_Browser() { clear(); } /** Gets the current format code prefix character, which by default is '\@'. A string of formatting codes at the start of each column are stripped off and used to modify how the rest of the line is printed: \li '\@.' Print rest of line, don't look for more '\@' signs \li '\@\@' Print rest of line starting with '\@' \li '\@l' Use a LARGE (24 point) font \li '\@m' Use a medium large (18 point) font \li '\@s' Use a small (11 point) font \li '\@b' Use a bold font (adds FL_BOLD to font) \li '\@i' Use an italic font (adds FL_ITALIC to font) \li '\@f' or '\@t' Use a fixed-pitch font (sets font to FL_COURIER) \li '\@c' Center the line horizontally \li '\@r' Right-justify the text \li '\@B0', '\@B1', ... '\@B255' Fill the backgound with fl_color(n) \li '\@C0', '\@C1', ... '\@C255' Use fl_color(n) to draw the text \li '\@F0', '\@F1', ... Use fl_font(n) to draw the text \li '\@S1', '\@S2', ... Use point size n to draw the text \li '\@u' or '\@_' Underline the text. \li '\@-' draw an engraved line through the middle. Notice that the '\@.' command can be used to reliably terminate the parsing. To print a random string in a random color, use sprintf("@C%d@.%s", color, string) and it will work even if the string starts with a digit or has the format character in it. */ char format_char() const { return format_char_; } /** Sets the current format code prefix character to \p c. The default prefix is '\@'. Set the prefix to 0 to disable formatting. \see format_char() for list of '\@' codes */ void format_char(char c) { format_char_ = c; } /** Gets the current column separator character. The default is '\\t' (tab). \see column_char(), column_widths() */ char column_char() const { return column_char_; } /** Sets the column separator to c. This will only have an effect if you also set column_widths(). The default is '\\t' (tab). \see column_char(), column_widths() */ void column_char(char c) { column_char_ = c; } /** Gets the current column width array. This array is zero-terminated and specifies the widths in pixels of each column. The text is split at each column_char() and each part is formatted into it's own column. After the last column any remaining text is formatted into the space between the last column and the right edge of the browser, even if the text contains instances of column_char() . The default value is a one-element array of just a zero, which means there are no columns. Example: \code Fl_Browser *b = new Fl_Browser(..); int widths[] = { 50, 50, 50, 70, 70, 40, 40, 70, 70, 50, 0 }; // widths for each column b->column_widths(widths); // assign array to widget b->column_char('\t'); // use tab as the column character b->add("USER\tPID\tCPU\tMEM\tVSZ\tRSS\tTTY\tSTAT\tSTART\tTIME\tCOMMAND"); b->add("root\t2888\t0.0\t0.0\t1352\t0\ttty3\tSW\tAug15\t0:00\t@b@f/sbin/mingetty tty3"); b->add("root\t13115\t0.0\t0.0\t1352\t0\ttty2\tSW\tAug30\t0:00\t@b@f/sbin/mingetty tty2"); [..] \endcode \see column_char(), column_widths() */ const int* column_widths() const { return column_widths_; } /** Sets the current array to \p arr. Make sure the last entry is zero. \see column_char(), column_widths() */ void column_widths(const int* arr) { column_widths_ = arr; } /** Returns non-zero if \p line has been scrolled to a position where it is being displayed. Checks to see if the item's vertical position is within the top and bottom edges of the display window. This does NOT take into account the hide()/show() status of the widget or item. \param[in] line The line to be checked \returns 1 if visible, 0 if not visible. \see topline(), middleline(), bottomline(), displayed(), lineposition() */ int displayed(int line) const { return Fl_Browser_::displayed(find_line(line)); } /** Make the item at the specified \p line visible(). Functionally similar to show(int line). If \p line is out of range, redisplay top or bottom of list as appropriate. \param[in] line The line to be made visible. \see show(int), hide(int), display(), visible(), make_visible() */ void make_visible(int line) { if (line < 1) Fl_Browser_::display(find_line(1)); else if (line > lines) Fl_Browser_::display(find_line(lines)); else Fl_Browser_::display(find_line(line)); } // icon support void icon(int line, Fl_Image* icon); Fl_Image* icon(int line) const; void remove_icon(int line); /** For back compatibility only. */ void replace(int a, const char* b) { text(a, b); } void display(int line, int val=1); }; #endif // // End of "$Id: Fl_Browser.H 6850 2009-09-07 02:25:51Z greg.ercolano$". // 

Added fltk-1.3/FL/Fl_Browser_.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378  // // "$Id: Fl_Browser_.H 6902 2009-09-27 11:06:56Z matt$" // // Common browser header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Browser_ widget . */ // Yes, I know this should be a template... #ifndef Fl_Browser__H #define Fl_Browser__H #ifndef Fl_Group_H #include "Fl_Group.H" #endif #include "Fl_Scrollbar.H" #include // Fl::scrollbar_size() #define FL_NORMAL_BROWSER 0 /**< type() of Fl_Browser */ #define FL_SELECT_BROWSER 1 /**< type() of FL_Select_Browser */ #define FL_HOLD_BROWSER 2 /**< type() of Fl_Hold_Browser */ #define FL_MULTI_BROWSER 3 /**< type() of Fl_Multi_Browser */ #define FL_SORT_ASCENDING 0 /**< sort browser items in ascending alphabetic order. */ #define FL_SORT_DESCENDING 1 /**< sort in descending order */ /** This is the base class for browsers. To be useful it must be subclassed and several virtual functions defined. The Forms-compatible browser and the file chooser's browser are subclassed off of this. This has been designed so that the subclass has complete control over the storage of the data, although because next() and prev() functions are used to index, it works best as a linked list or as a large block of characters in which the line breaks must be searched for. A great deal of work has been done so that the "height" of a data object does not need to be determined until it is drawn. This is useful if actually figuring out the size of an object requires accessing image data or doing stat() on a file or doing some other slow operation. */ class FL_EXPORT Fl_Browser_ : public Fl_Group { int position_; // where user wants it scrolled to int real_position_; // the current vertical scrolling position int hposition_; // where user wants it panned to int real_hposition_; // the current horizontal scrolling position int offset_; // how far down top_ item the real_position is int max_width; // widest object seen so far uchar has_scrollbar_; // which scrollbars are enabled Fl_Font textfont_; Fl_Fontsize textsize_; Fl_Color textcolor_; void* top_; // which item scrolling position is in void* selection_; // which is selected (except for FL_MULTI_BROWSER) void *redraw1,*redraw2; // minimal update pointers void* max_width_item; // which item has max_width_ int scrollbar_size_; // size of scrollbar trough void update_top(); protected: // All of the following must be supplied by the subclass: /** This method must be provided by the subclass to return the first item in the list. \see item_first(), item_next(), item_last(), item_prev() */ virtual void *item_first() const = 0; /** This method must be provided by the subclass to return the item in the list after \p item. \see item_first(), item_next(), item_last(), item_prev() */ virtual void *item_next(void *item) const = 0; /** This method must be provided by the subclass to return the item in the list before \p item. \see item_first(), item_next(), item_last(), item_prev() */ virtual void *item_prev(void *item) const = 0; /** This method must be provided by the subclass to return the last item in the list. \see item_first(), item_next(), item_last(), item_prev() */ virtual void *item_last() const { return 0L; } /** This method must be provided by the subclass to return the height of \p item in pixels. Allow for two additional pixels for the list selection box. \param[in] item The item whose height is returned. \returns The height of the specified \p item in pixels. \see item_height(), item_width(), item_quick_height() */ virtual int item_height(void *item) const = 0; /** This method must be provided by the subclass to return the width of the \p item in pixels. Allow for two additional pixels for the list selection box. \param[in] item The item whose width is returned. \returns The width of the item in pixels. */ virtual int item_width(void *item) const = 0; virtual int item_quick_height(void *item) const ; /** This method must be provided by the subclass to draw the \p item in the area indicated by \p X, \p Y, \p W, \p H. */ virtual void item_draw(void *item,int X,int Y,int W,int H) const = 0; /** This optional method returns a string (label) that may be used for sorting. \param[in] item The item whose label text is returned. \returns The item's text label. (Can be NULL if blank) */ virtual const char *item_text(void *item) const { return 0L; } /** This optional method should be provided by the subclass to efficiently swap browser items \p a and \p b, such as for sorting. \param[in] a,b The two items to be swapped. */ virtual void item_swap(void *a,void *b) { } /** This method must be provided by the subclass to return the item for the specified \p index. \param[in] index The \p index of the item to be returned \returns The item at the specified \p index. */ virtual void *item_at(int index) const { return 0L; } // you don't have to provide these but it may help speed it up: virtual int full_width() const ; // current width of all items virtual int full_height() const ; // current height of all items virtual int incr_height() const ; // average height of an item // These only need to be done by subclass if you want a multi-browser: virtual void item_select(void *item,int val=1); virtual int item_selected(void *item) const ; // things the subclass may want to call: /** Returns the item that appears at the top of the list. */ void *top() const { return top_; } /** Returns the item currently selected, or NULL if there is no selection. For multiple selection browsers this call returns the currently focused item, even if it is not selected. To find all selected items, call Fl_Multi_Browser::selected() for every item in question. */ void *selection() const { return selection_; } void new_list(); // completely clobber all data, as though list replaced void deleting(void *item); // get rid of any pointers to item void replacing(void *a,void *b); // change a pointers to b void swapping(void *a,void *b); // exchange pointers a and b void inserting(void *a,void *b); // insert b near a int displayed(void *item) const ; // true if this item is visible void redraw_line(void *item); // minimal update, no change in size /** This method will cause the entire list to be redrawn. \see redraw_lines(), redraw_line() */ void redraw_lines() { damage(FL_DAMAGE_SCROLL); } // redraw all of them void bbox(int &X,int &Y,int &W,int &H) const; int leftedge() const; // x position after scrollbar & border void *find_item(int ypos); // item under mouse void draw(); Fl_Browser_(int X,int Y,int W,int H,const char *L=0); public: /** Vertical scrollbar. Public, so that it can be accessed directly. */ Fl_Scrollbar scrollbar; /** Horizontal scrollbar. Public, so that it can be accessed directly. */ Fl_Scrollbar hscrollbar; int handle(int event); void resize(int X,int Y,int W,int H); int select(void *item,int val=1,int docallbacks=0); int select_only(void *item,int docallbacks=0); int deselect(int docallbacks=0); /** Gets the vertical scroll position of the list as a pixel position \p pos. The position returned is how many pixels of the list are scrolled off the top edge of the screen. Example: A position of '3' indicates the top 3 pixels of the list are scrolled off the top edge of the screen. \see position(), hposition() */ int position() const { return position_; } void position(int pos); // scroll to here /** Gets the horizontal scroll position of the list as a pixel position \p pos. The position returned is how many pixels of the list are scrolled off the left edge of the screen. Example: A position of '18' indicates the left 18 pixels of the list are scrolled off the left edge of the screen. \see position(), hposition() */ int hposition() const { return hposition_; } void hposition(int); // pan to here void display(void *item); // scroll so this item is shown /** Values for has_scrollbar(). */ /** Anonymous enum bit flags for has_scrollbar(). - bit 0: horizontal - bit 1: vertical - bit 2: 'always' (to be combined with bits 0 and 1) - bit 3-31: reserved for future use */ enum { // values for has_scrollbar() HORIZONTAL = 1, ///< Only show horizontal scrollbar. VERTICAL = 2, ///< Only show vertical scrollbar. BOTH = 3, ///< Show both scrollbars. (default) ALWAYS_ON = 4, ///< Specified scrollbar(s) should 'always' be shown (to be used with HORIZONTAL/VERTICAL) HORIZONTAL_ALWAYS = 5, ///< Horizontal scrollbar always on. VERTICAL_ALWAYS = 6, ///< Vertical scrollbar always on. BOTH_ALWAYS = 7 ///< Both scrollbars always on. }; /** Returns the current scrollbar mode, see Fl_Browser_::has_scrollbar(uchar) */ uchar has_scrollbar() const { return has_scrollbar_; } /** Sets whether the widget should have scrollbars or not (default Fl_Browser_::BOTH). By default you can scroll in both directions, and the scrollbars disappear if the data will fit in the widget. has_scrollbar() changes this based on the value of \p mode: - 0 - No scrollbars. - Fl_Browser_::HORIZONTAL - Only a horizontal scrollbar. - Fl_Browser_::VERTICAL - Only a vertical scrollbar. - Fl_Browser_::BOTH - The default is both scrollbars. - Fl_Browser_::HORIZONTAL_ALWAYS - Horizontal scrollbar always on, vertical always off. - Fl_Browser_::VERTICAL_ALWAYS - Vertical scrollbar always on, horizontal always off. - Fl_Browser_::BOTH_ALWAYS - Both always on. */ void has_scrollbar(uchar mode) { has_scrollbar_ = mode; } /** Gets the default text font for the lines in the browser. \see textfont(), textsize(), textcolor() */ Fl_Font textfont() const { return textfont_; } /** Sets the default text font for the lines in the browser to \p font. */ void textfont(Fl_Font font) { textfont_ = font; } /** Gets the default text size (in pixels) for the lines in the browser. */ Fl_Fontsize textsize() const { return textsize_; } /** Sets the default text size (in pixels) for the lines in the browser to \p size. */ void textsize(Fl_Fontsize size) { textsize_ = size; } /** Gets the default text color for the lines in the browser. */ Fl_Color textcolor() const { return textcolor_; } /** Sets the default text color for the lines in the browser to color \p col. */ void textcolor(Fl_Color col) { textcolor_ = col; } /** Gets the current size of the scrollbars' troughs, in pixels. If this value is zero (default), this widget will use the Fl::scrollbar_size() value as the scrollbar's width. \returns Scrollbar size in pixels, or 0 if the global Fl::scrollsize() is being used. \see Fl::scrollbar_size(int) */ int scrollbar_size() const { return(scrollbar_size_); } /** Sets the pixel size of the scrollbars' troughs to the \p size, in pixels. Normally you should not need this method, and should use Fl::scrollbar_size(int) instead to manage the size of ALL your widgets' scrollbars. This ensures your application has a consistent UI, is the default behavior, and is normally what you want. Only use THIS method if you really need to override the global scrollbar size. The need for this should be rare. Setting \p size to the special value of 0 causes the widget to track the global Fl::scrollbar_size(), which is the default. \param[in] size Sets the scrollbar size in pixels.\n If 0 (default), scrollbar size tracks the global Fl::scrollbar_size() \see Fl::scrollbar_size() */ void scrollbar_size(int size) { scrollbar_size_ = size; } /** This method has been deprecated, existing for backwards compatibility only. Use scrollbar_size() instead. This method always returns the global value Fl::scrollbar_size(). \returns Always returns the global value Fl::scrollbar_size(). \todo This method should eventually be removed in 1.4+ */ int scrollbar_width() const { return(Fl::scrollbar_size()); } /** This method has been deprecated, existing for backwards compatibility only. Use scrollbar_size(int) instead. This method sets the global Fl::scrollbar_size(), and forces this instance of the widget to use it. \todo This method should eventually be removed in 1.4+ */ void scrollbar_width(int width) { Fl::scrollbar_size(width); scrollbar_size_ = 0; } /** Moves the vertical scrollbar to the righthand side of the list. For back compatibility. */ void scrollbar_right() { scrollbar.align(FL_ALIGN_RIGHT); } /** Moves the vertical scrollbar to the lefthand side of the list. For back compatibility. */ void scrollbar_left() { scrollbar.align(FL_ALIGN_LEFT); } void sort(int flags=0); }; #endif // // End of "$Id: Fl_Browser_.H 6902 2009-09-27 11:06:56Z matt$". // 

Added fltk-1.3/FL/Fl_Button.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176  // // "$Id: Fl_Button.H 6878 2009-09-17 22:12:24Z matt$" // // Button header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Button widget . */ #ifndef Fl_Button_H #define Fl_Button_H #ifndef Fl_Widget_H #include "Fl_Widget.H" #endif // values for type() #define FL_NORMAL_BUTTON 0 /**< value() will be set to 1 during the press of the button and reverts back to 0 when the button is released */ #define FL_TOGGLE_BUTTON 1 ///< value() toggles between 0 and 1 at every click of the button #define FL_RADIO_BUTTON (FL_RESERVED_TYPE+2) /**< is set to 1 at button press, and all other buttons in the same group with type() == FL_RADIO_BUTTON are set to zero.*/ #define FL_HIDDEN_BUTTON 3 ///< for Forms compatibility #ifndef FL_DOXYGEN extern FL_EXPORT Fl_Shortcut fl_old_shortcut(const char*); #endif /** \class Fl_Button \brief Buttons generate callbacks when they are clicked by the user. You control exactly when and how by changing the values for type() and when(). Buttons can also generate callbacks in response to \c FL_SHORTCUT events. The button can either have an explicit shortcut(int s) value or a letter shortcut can be indicated in the label() with an '\&' character before it. For the label shortcut it does not matter if \e Alt is held down, but if you have an input field in the same window, the user will have to hold down the \e Alt key so that the input field does not eat the event first as an \c FL_KEYBOARD event. \todo Refactor the doxygen comments for Fl_Button type() documentation. For an Fl_Button object, the type() call returns one of: \li \c FL_NORMAL_BUTTON (0): value() remains unchanged after button press. \li \c FL_TOGGLE_BUTTON: value() is inverted after button press. \li \c FL_RADIO_BUTTON: value() is set to 1 after button press, and all other buttons in the current group with type() == FL_RADIO_BUTTON are set to zero. \todo Refactor the doxygen comments for Fl_Button when() documentation. For an Fl_Button object, the following when() values are useful, the default being \c FL_WHEN_RELEASE: \li \c 0: The callback is not done, instead changed() is turned on. \li \c FL_WHEN_RELEASE: The callback is done after the user successfully clicks the button, or when a shortcut is typed. \li \c FL_WHEN_CHANGED: The callback is done each time the value() changes (when the user pushes and releases the button, and as the mouse is dragged around in and out of the button). */ class FL_EXPORT Fl_Button : public Fl_Widget { int shortcut_; char value_; char oldval; uchar down_box_; protected: virtual void draw(); public: virtual int handle(int); Fl_Button(int X, int Y, int W, int H, const char *L = 0); int value(int v); /** Returns the current value of the button (0 or 1). */ char value() const {return value_;} /** Same as \c value(1). \see value(int v) */ int set() {return value(1);} /** Same as \c value(0). \see value(int v) */ int clear() {return value(0);} void setonly(); // this should only be called on FL_RADIO_BUTTONs /** Returns the current shortcut key for the button. \retval int */ int shortcut() const {return shortcut_;} /** Sets the shortcut key to \c s. Setting this overrides the use of '\&' in the label(). The value is a bitwise OR of a key and a set of shift flags, for example: FL_ALT | 'a', or FL_ALT | (FL_F + 10), or just 'a'. A value of 0 disables the shortcut. The key can be any value returned by Fl::event_key(), but will usually be an ASCII letter. Use a lower-case letter unless you require the shift key to be held down. The shift flags can be any set of values accepted by Fl::event_state(). If the bit is on, that shift key must be pushed. Meta, Alt, Ctrl, and Shift must be off if they are not in the shift flags (zero for the other bits indicates a "don't care" setting). \param[in] s bitwise OR of key and shift flags */ void shortcut(int s) {shortcut_ = s;} /** Returns the current down box type, which is drawn when value() is non-zero. \retval Fl_Boxtype */ Fl_Boxtype down_box() const {return (Fl_Boxtype)down_box_;} /** Sets the down box type. The default value of 0 causes FLTK to figure out the correct matching down version of box(). \param[in] b down box type */ void down_box(Fl_Boxtype b) {down_box_ = b;} /// (for backwards compatibility) void shortcut(const char *s) {shortcut(fl_old_shortcut(s));} /// (for backwards compatibility) Fl_Color down_color() const {return selection_color();} /// (for backwards compatibility) void down_color(unsigned c) {selection_color(c);} }; #endif // // End of "$Id: Fl_Button.H 6878 2009-09-17 22:12:24Z matt$". // 

Added fltk-1.3/FL/Fl_Cairo.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97  // // "$Id: Fl_Cairo.H 6716 2009-03-24 01:40:44Z fabien$" // // Main header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Handling transparently platform dependent cairo include files */ #ifndef FL_CAIRO_H # define FL_CAIRO_H # ifdef HAVE_CAIRO // Cairo is currently supported for the following platforms: // Win32, Apple Quartz, X11 # include # if defined(USE_X11) // X11 # include # elif defined(WIN32) # include # elif defined(__APPLE_QUARTZ__) # include # else # error Cairo is not supported on that platform. # endif /** \addtogroup group_cairo @{ */ /** Contains all the necessary info on the current cairo context. A private internal & unique corresponding object is created to permit cairo context state handling while keeping it opaque. For internal use only. \note Only available when configure has the --enable-cairo option */ class FL_EXPORT Fl_Cairo_State { public: Fl_Cairo_State() : cc_(0), own_cc_(false), autolink_(false), window_(0), gc_(0) {} // access attributes cairo_t* cc() const {return cc_;} ///< Gets the current cairo context bool autolink() const {return autolink_;} ///< Gets the autolink option. See Fl::cairo_autolink_context(bool) /** Sets the current cairo context, \p own indicates cc deletion is handle externally by user */ void cc(cairo_t* c, bool own=true) { if (cc_ && own_cc_) cairo_destroy(cc_); cc_=c; if (!cc_) window_=0; own_cc_=own; } void autolink(bool b); ///< Sets the autolink option, only available with --enable-cairoext void window(void* w) {window_=w;} ///< Sets the window \p w to keep track on void* window() const {return window_;} ///< Gets the last window attached to a cc void gc(void* c) {gc_=c;} ///< Sets the gc \p c to keep track on void* gc() const {return gc_;} ///< Gets the last gc attached to a cc private: cairo_t * cc_; // contains the unique autoupdated cairo context bool own_cc_; // indicates whether we must delete the cc, useful for internal cleanup bool autolink_; // true by default, permits to prevent the automatic cairo mapping on fltk windows for custom cairo implementations void* window_, *gc_; // for keeping track internally of last win+gc treated }; /** @} */ # endif // HAVE_CAIRO #endif // FL_CAIRO_H // // End of "$Id: Fl_Cairo.H 6716 2009-03-24 01:40:44Z fabien$" . // 

Added fltk-1.3/FL/Fl_Cairo_Window.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92  // // "$Id: Fl_Cairo_Window.H 6716 2009-03-24 01:40:44Z fabien$" // // Main header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Cairo_Window Handling transparently a fltk window incorporte a cairo draw callback. */ #ifndef FL_CAIRO_WINDOW_H # define FL_CAIRO_WINDOW_H # ifdef HAVE_CAIRO // Cairo is currently supported for the following platforms: // Win32, Apple Quartz, X11 # include # include /** \addtogroup group_cairo @{ */ /** This defines a pre-configured cairo fltk window. This class overloads the virtual draw() method for you, so that the only thing you have to do is to provide your cairo code. All cairo context handling is achieved transparently. \note You can alternatively define your custom cairo fltk window, and thus at least override the draw() method to provide custom cairo support. In this case you will probably use Fl::cairo_make_current(Fl_Window*) to attach a context to your window. You should do it only when your window is the current window. \see Fl_Window::current() */ class FL_EXPORT Fl_Cairo_Window : public Fl_Double_Window { public: Fl_Cairo_Window(int w, int h) : Fl_Double_Window(w,h),draw_cb_(0) {} protected: /** Overloaded to provide cairo callback support */ void draw() { Fl_Double_Window::draw(); // manual method ? if yes explicitly get a cairo_context here if (!Fl::cairo_autolink_context()) Fl::cairo_make_current(this); if (draw_cb_) draw_cb_(this, Fl::cairo_cc()); } public: /** This defines the cairo draw callback prototype that you must further */ typedef void (*cairo_draw_cb) (Fl_Cairo_Window* self, cairo_t* def); /** You must provide a draw callback which will implement your cairo rendering. This method will permit you to set your cairo callback to \p cb. */ void set_draw_cb(cairo_draw_cb cb){draw_cb_=cb;} private: cairo_draw_cb draw_cb_; }; /** @} */ # endif // HAVE_CAIRO #endif // FL_CAIRO_WINDOW_H // // End of "$Id: Fl_Cairo_Window.H 6716 2009-03-24 01:40:44Z fabien$" . // 

Added fltk-1.3/FL/Fl_Chart.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160  // // "$Id: Fl_Chart.H 6902 2009-09-27 11:06:56Z matt$" // // Forms chart header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Chart widget . */ #ifndef Fl_Chart_H #define Fl_Chart_H #ifndef Fl_Widget_H #include "Fl_Widget.H" #endif // values for type() #define FL_BAR_CHART 0 /**< type() for Bar Chart variant */ #define FL_HORBAR_CHART 1 /**< type() for Horizontal Bar Chart variant */ #define FL_LINE_CHART 2 /**< type() for Line Chart variant */ #define FL_FILL_CHART 3 /**< type() for Fill Line Chart variant */ #define FL_SPIKE_CHART 4 /**< type() for Spike Chart variant */ #define FL_PIE_CHART 5 /**< type() for Pie Chart variant */ #define FL_SPECIALPIE_CHART 6 /**< type() for Special Pie Chart variant */ #define FL_FILLED_CHART FL_FILL_CHART /**< for compatibility */ #define FL_CHART_MAX 128 /**< max entries per chart */ #define FL_CHART_LABEL_MAX 18 /**< max label length for entry */ /** For internal use only */ struct FL_CHART_ENTRY { float val; /**< For internal use only. */ unsigned col; /**< For internal use only. */ char str[FL_CHART_LABEL_MAX+1]; /**< For internal use only. */ }; /** \class Fl_Chart \brief Fl_Chart displays simple charts. It is provided for Forms compatibility. \image html charts.gif \image latex charts.eps "Fl_Chart" width=10cm \todo Refactor Fl_Chart::type() information. The type of an Fl_Chart object can be set using type(uchar t) to: \li \c FL_BAR_CHART: Each sample value is drawn as a vertical bar. \li \c FL_FILLED_CHART: The chart is filled from the bottom of the graph to the sample values. \li \c FL_HORBAR_CHART: Each sample value is drawn as a horizontal bar. \li \c FL_LINE_CHART: The chart is drawn as a polyline with vertices at each sample value. \li \c FL_PIE_CHART: A pie chart is drawn with each sample value being drawn as a proportionate slice in the circle. \li \c FL_SPECIALPIE_CHART: Like \c FL_PIE_CHART, but the first slice is separated from the pie. \li \c FL_SPIKE_CHART: Each sample value is drawn as a vertical line. */ class FL_EXPORT Fl_Chart : public Fl_Widget { int numb; int maxnumb; int sizenumb; FL_CHART_ENTRY *entries; double min,max; uchar autosize_; Fl_Font textfont_; Fl_Fontsize textsize_; Fl_Color textcolor_; protected: void draw(); public: Fl_Chart(int X, int Y, int W, int H, const char *L = 0); ~Fl_Chart(); void clear(); void add(double val, const char *str = 0, unsigned col = 0); void insert(int ind, double val, const char *str = 0, unsigned col = 0); void replace(int ind, double val, const char *str = 0, unsigned col = 0); /** Gets the lower and upper bounds of the chart values. \param[out] a, b are set to lower, upper */ void bounds(double *a,double *b) const {*a = min; *b = max;} void bounds(double a,double b); /** Returns the number of data values in the chart. */ int size() const {return numb;} void size(int W, int H) { Fl_Widget::size(W, H); } /** Gets the maximum number of data values for a chart. */ int maxsize() const {return maxnumb;} void maxsize(int m); /** Gets the chart's text font */ Fl_Font textfont() const {return textfont_;} /** Sets the chart's text font to \p s. */ void textfont(Fl_Font s) {textfont_ = s;} /** Gets the chart's text size */ Fl_Fontsize textsize() const {return textsize_;} /** gets the chart's text size to \p s. */ void textsize(Fl_Fontsize s) {textsize_ = s;} /** Gets the chart's text color */ Fl_Color textcolor() const {return textcolor_;} /** gets the chart's text color to \p n. */ void textcolor(Fl_Color n) {textcolor_ = n;} /** Get whether the chart will automatically adjust the bounds of the chart. \returns non-zero if auto-sizing is enabled and zero if disabled. */ uchar autosize() const {return autosize_;} /** Set whether the chart will automatically adjust the bounds of the chart. \param[in] n non-zero to enable automatic resizing, zero to disable. */ void autosize(uchar n) {autosize_ = n;} }; #endif // // End of "$Id: Fl_Chart.H 6902 2009-09-27 11:06:56Z matt$". // 

Added fltk-1.3/FL/Fl_Check_Browser.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122  // // "$Id: Fl_Check_Browser.H 6614 2009-01-01 16:11:32Z matt$" // // Fl_Check_Browser header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Check_Browser widget . */ #ifndef Fl_Check_Browser_H #define Fl_Check_Browser_H #include "Fl.H" #include "Fl_Browser_.H" /** The Fl_Check_Browser widget displays a scrolling list of text lines that may be selected and/or checked by the user. */ class FL_EXPORT Fl_Check_Browser : public Fl_Browser_ { /* required routines for Fl_Browser_ subclass: */ void *item_first() const; void *item_next(void *) const; void *item_prev(void *) const; int item_height(void *) const; int item_width(void *) const; void item_draw(void *, int, int, int, int) const; void item_select(void *, int); int item_selected(void *) const; /* private data */ public: // IRIX 5.3 C++ compiler doesn't support private structures... #ifndef FL_DOXYGEN /** For internal use only. */ struct cb_item { cb_item *next; /**< For internal use only. */ cb_item *prev; /**< For internal use only. */ char checked; /**< For internal use only. */ char selected; /**< For internal use only. */ char *text; /**< For internal use only. */ }; #endif // !FL_DOXYGEN private: cb_item *first; cb_item *last; cb_item *cache; int cached_item; int nitems_; int nchecked_; cb_item *find_item(int) const; int lineno(cb_item *) const; public: Fl_Check_Browser(int x, int y, int w, int h, const char *l = 0); /** The destructor deletes all list items and destroys the browser. */ ~Fl_Check_Browser() { clear(); } int add(char *s); // add an (unchecked) item int add(char *s, int b); // add an item and set checked // both return the new nitems() int remove(int item); // delete an item. Returns nitems() // inline const char * methods to avoid breaking binary compatibility... /** See int Fl_Check_Browser::add(char *s) */ int add(const char *s) { return add((char *)s); } /** See int Fl_Check_Browser::add(char *s) */ int add(const char *s, int b) { return add((char *)s, b); } void clear(); // delete all items /** Returns how many lines are in the browser. The last line number is equal to this. */ int nitems() const { return nitems_; } /** Returns how many items are currently checked. */ int nchecked() const { return nchecked_; } int checked(int item) const; void checked(int item, int b); /** Equivalent to Fl_Check_Browser::checked(item, 1). */ void set_checked(int item) { checked(item, 1); } void check_all(); void check_none(); int value() const; // currently selected item char *text(int item) const; // returns pointer to internal buffer protected: int handle(int); }; #endif // Fl_Check_Browser_H // // End of "$Id: Fl_Check_Browser.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Check_Button.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60  // // "$Id: Fl_Check_Button.H 6614 2009-01-01 16:11:32Z matt$" // // Check button header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Check_Button widget . */ #ifndef Fl_Check_Button_H #define Fl_Check_Button_H #include "Fl_Light_Button.H" /** \class Fl_Check_Button \brief A button with an "checkmark" to show its status. \image html Fl_Check_Button.gif \image latex Fl_Check_Button.eps "Fl_Check_Button" width=4cm Buttons generate callbacks when they are clicked by the user. You control exactly when and how by changing the values for type() and when(). The Fl_Check_Button subclass displays its "ON" state by showing a "checkmark" rather than drawing itself pushed in. \todo Refactor Fl_Check_Button doxygen comments (add color() info etc?) \todo Generate Fl_Check_Button.gif with visible checkmark. */ class FL_EXPORT Fl_Check_Button : public Fl_Light_Button { public: Fl_Check_Button(int X, int Y, int W, int H, const char *L = 0); }; #endif // // End of "$Id: Fl_Check_Button.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Choice.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108  // // "$Id: Fl_Choice.H 6614 2009-01-01 16:11:32Z matt$" // // Choice header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Choice widget . */ #ifndef Fl_Choice_H #define Fl_Choice_H #include "Fl_Menu_.H" /** \class Fl_Choice \brief A button that is used to pop up a menu. This is a button that, when pushed, pops up a menu (or hierarchy of menus) defined by an array of Fl_Menu_Item objects. Motif calls this an OptionButton. The only difference between this and a Fl_Menu_Button is that the name of the most recent chosen menu item is displayed inside the box, while the label is displayed outside the box. However, since the use of this is most often to control a single variable rather than do individual callbacks, some of the Fl_Menu_Button methods are redescribed here in those terms. When the user picks an item off the menu the value() is set to that item and then the item's callback is done with the menu_button as the \c Fl_Widget* argument. If the item does not have a callback the menu_button's callback is done instead. All three mouse buttons pop up the menu. The Forms behavior of the first two buttons to increment/decrement the choice is not implemented. This could be added with a subclass, however. The menu will also pop up in response to shortcuts indicated by putting a '\&' character in the label(). See Fl_Button::shortcut(int s) for a description of this. Typing the shortcut() of any of the items will do exactly the same as when you pick the item with the mouse. The '\&' character in item names are only looked at when the menu is popped up, however. \image html choice.gif \image latex choice.eps "Fl_Choice" width=4cm \todo Refactor the doxygen comments for Fl_Choice changed() documentation. \li int Fl_Widget::changed() const This value is true the user picks a different value. It is turned off by value() and just before doing a callback (the callback can turn it back on if desired). \li void Fl_Widget::set_changed() This method sets the changed() flag. \li void Fl_Widget::clear_changed() This method clears the changed() flag. \li Fl_Boxtype Fl_Choice::down_box() const Gets the current down box, which is used when the menu is popped up. The default down box type is \c FL_DOWN_BOX. \li void Fl_Choice::down_box(Fl_Boxtype b) Sets the current down box type to \p b. */ class FL_EXPORT Fl_Choice : public Fl_Menu_ { protected: void draw(); public: int handle(int); Fl_Choice(int X, int Y, int W, int H, const char *L = 0); /** Gets the index of the last item chosen by the user. The index is zero initially. */ int value() const {return Fl_Menu_::value();} int value(int v); int value(const Fl_Menu_Item* v); }; #endif // // End of "$Id: Fl_Choice.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Clock.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137  // // "$Id: Fl_Clock.H 6812 2009-07-01 07:27:25Z AlbrechtS$" // // Clock header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Clock, Fl_Clock_Output widgets . */ #ifndef Fl_Clock_H #define Fl_Clock_H #ifndef Fl_Widget_H #include "Fl_Widget.H" #endif // values for type: #define FL_SQUARE_CLOCK 0 /**< type() of Square Clock variant */ #define FL_ROUND_CLOCK 1 /**< type() of Round Clock variant */ #define FL_ANALOG_CLOCK FL_SQUARE_CLOCK /**< An analog clock is square */ #define FL_DIGITAL_CLOCK FL_SQUARE_CLOCK /**< Not yet implemented */ // fabien: Please keep the horizontal formatting of both images in class desc, // don't lose vert. space for nothing! /** \class Fl_Clock_Output \brief This widget can be used to display a program-supplied time. The time shown on the clock is not updated. To display the current time, use Fl_Clock instead. \htmlonly
type() FL_SQUARE_CLOCK and FL_ROUND_CLOCK
\endhtmlonly \image html clock.gif \htmlonly \endhtmlonly \image html round_clock.gif \htmlonly
\endhtmlonly \image latex clock.eps "FL_SQUARE_CLOCK type" width=4cm \image latex round_clock.eps "FL_ROUND_CLOCK type" width=4cm */ class FL_EXPORT Fl_Clock_Output : public Fl_Widget { int hour_, minute_, second_; ulong value_; void drawhands(Fl_Color,Fl_Color); // part of draw protected: void draw(); void draw(int X, int Y, int W, int H); public: Fl_Clock_Output(int X, int Y, int W, int H, const char *L = 0); void value(ulong v); // set to this Unix time void value(int H, int m, int s); /** Returns the displayed time. Returns the time in seconds since the UNIX epoch (January 1, 1970). \see value(ulong) */ ulong value() const {return value_;} /** Returns the displayed hour (0 to 23). \see value(), minute(), second() */ int hour() const {return hour_;} /** Returns the displayed minute (0 to 59). \see value(), hour(), second() */ int minute() const {return minute_;} /** Returns the displayed second (0 to 60, 60=leap second). \see value(), hour(), minute() */ int second() const {return second_;} }; // a Fl_Clock displays the current time always by using a timeout: /** \class Fl_Clock \brief This widget provides a round analog clock display. Fl_Clock is provided for Forms compatibility. It installs a 1-second timeout callback using Fl::add_timeout(). You can choose the rounded or square type of the clock with type(), see below. \htmlonly
type() FL_SQUARE_CLOCK and FL_ROUND_CLOCK
\endhtmlonly \image html clock.gif \htmlonly \endhtmlonly \image html round_clock.gif \htmlonly
\endhtmlonly \image latex clock.eps "FL_SQUARE_CLOCK type" width=4cm \image latex round_clock.eps "FL_ROUND_CLOCK type" width=4cm */ class FL_EXPORT Fl_Clock : public Fl_Clock_Output { public: int handle(int); Fl_Clock(int X, int Y, int W, int H, const char *L = 0); Fl_Clock(uchar t, int X, int Y, int W, int H, const char *L); ~Fl_Clock(); }; #endif // // End of "$Id: Fl_Clock.H 6812 2009-07-01 07:27:25Z AlbrechtS$". // 

Added fltk-1.3/FL/Fl_Color_Chooser.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189  // // "$Id: Fl_Color_Chooser.H 6614 2009-01-01 16:11:32Z matt$" // // Color chooser header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /** \file Fl_Color_Chooser widget . */ // The color chooser object and the color chooser popup. The popup // is just a window containing a single color chooser and some boxes // to indicate the current and cancelled color. #ifndef Fl_Color_Chooser_H #define Fl_Color_Chooser_H #include #include #include #include #include #ifndef FL_DOXYGEN /** For internal use only */ class FL_EXPORT Flcc_HueBox : public Fl_Widget { int px, py; protected: void draw(); int handle_key(int); public: int handle(int); Flcc_HueBox(int X, int Y, int W, int H) : Fl_Widget(X,Y,W,H) { px = py = 0;} }; /** For internal use only */ class FL_EXPORT Flcc_ValueBox : public Fl_Widget { int py; protected: void draw(); int handle_key(int); public: int handle(int); Flcc_ValueBox(int X, int Y, int W, int H) : Fl_Widget(X,Y,W,H) { py = 0;} }; /** For internal use only */ class FL_EXPORT Flcc_Value_Input : public Fl_Value_Input { public: int format(char*); Flcc_Value_Input(int X, int Y, int W, int H) : Fl_Value_Input(X,Y,W,H) {} }; #endif // !FL_DOXYGEN /** \addtogroup group_comdlg @{ */ /** \class Fl_Color_Chooser \brief The Fl_Color_Chooser widget provides a standard RGB color chooser. \image html fl_color_chooser.jpg \image latex fl_color_chooser.eps "fl_color_chooser()" width=5cm You can place any number of the widgets into a panel of your own design. The diagram shows the widget as part of a color chooser dialog created by the fl_color_chooser() function. The Fl_Color_Chooser widget contains the hue box, value slider, and rgb input fields from the above diagram (it does not have the color chips or the Cancel or OK buttons). The callback is done every time the user changes the rgb value. It is not done if they move the hue control in a way that produces the \e same rgb value, such as when saturation or value is zero. The fl_color_chooser() function pops up a window to let the user pick an arbitrary RGB color. They can pick the hue and saturation in the "hue box" on the left (hold down CTRL to just change the saturation), and the brightness using the vertical slider. Or they can type the 8-bit numbers into the RGB Fl_Value_Input fields, or drag the mouse across them to adjust them. The pull-down menu lets the user set the input fields to show RGB, HSV, or 8-bit RGB (0 to 255). fl_color_chooser() returns non-zero if the user picks ok, and updates the RGB values. If the user picks cancel or closes the window this returns zero and leaves RGB unchanged. If you use the color chooser on an 8-bit screen, it will allocate all the available colors, leaving you no space to exactly represent the color the user picks! You can however use fl_rectf() to fill a region with a simulated color using dithering. */ /** @} */ class FL_EXPORT Fl_Color_Chooser : public Fl_Group { Flcc_HueBox huebox; Flcc_ValueBox valuebox; Fl_Choice choice; Flcc_Value_Input rvalue; Flcc_Value_Input gvalue; Flcc_Value_Input bvalue; Fl_Box resize_box; double hue_, saturation_, value_; double r_, g_, b_; void set_valuators(); static void rgb_cb(Fl_Widget*, void*); static void mode_cb(Fl_Widget*, void*); public: /** Returns which Fl_Color_Chooser variant is currently active */ int mode() {return choice.value();} /** Returns the current hue. 0 <= hue < 6. Zero is red, one is yellow, two is green, etc. This value is convenient for the internal calculations - some other systems consider hue to run from zero to one, or from 0 to 360. */ double hue() const {return hue_;} /** Returns the saturation. 0 <= saturation <= 1. */ double saturation() const {return saturation_;} /** Returns the value/brightness. 0 <= value <= 1. */ double value() const {return value_;} /** Returns the current red value. 0 <= r <= 1. */ double r() const {return r_;} /** Returns the current green value. 0 <= g <= 1. */ double g() const {return g_;} /** Returns the current blue value. 0 <= b <= 1. */ double b() const {return b_;} int hsv(double H, double S, double V); int rgb(double R, double G, double B); static void hsv2rgb(double H, double S, double V, double& R, double& G, double& B); static void rgb2hsv(double R, double G, double B, double& H, double& S, double& V); Fl_Color_Chooser(int X, int Y, int W, int H, const char *L = 0); }; FL_EXPORT int fl_color_chooser(const char* name, double& r, double& g, double& b); FL_EXPORT int fl_color_chooser(const char* name, uchar& r, uchar& g, uchar& b); #endif // // End of "$Id: Fl_Color_Chooser.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Counter.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124  // // "$Id: Fl_Counter.H 6939 2009-11-17 14:45:36Z matt$" // // Counter header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Counter widget . */ // A numerical value with up/down step buttons. From Forms. #ifndef Fl_Counter_H #define Fl_Counter_H #ifndef Fl_Valuator_H #include "Fl_Valuator.H" #endif // values for type(): #define FL_NORMAL_COUNTER 0 /**< type() for counter with fast buttons */ #define FL_SIMPLE_COUNTER 1 /**< type() for counter without fast buttons */ /** Controls a single floating point value with button (or keyboard) arrows. Double arrows buttons achieve larger steps than simple arrows. \see Fl_Spinner for value input with vertical step arrows.

\image html counter.gif

\image latex counter.eps "Fl_Counter" width=4cm \todo Refactor the doxygen comments for Fl_Counter type() documentation. The type of an Fl_Counter object can be set using type(uchar t) to: \li \c FL_NORMAL_COUNTER: Displays a counter with 4 arrow buttons. \li \c FL_SIMPLE_COUNTER: Displays a counter with only 2 arrow buttons. */ class FL_EXPORT Fl_Counter : public Fl_Valuator { Fl_Font textfont_; Fl_Fontsize textsize_; Fl_Color textcolor_; double lstep_; uchar mouseobj; static void repeat_callback(void *); int calc_mouseobj(); void increment_cb(); protected: void draw(); public: int handle(int); Fl_Counter(int X, int Y, int W, int H, const char* L = 0); ~Fl_Counter(); /** Sets the increment for the large step buttons. The default value is 1.0. \param[in] a large step increment. */ void lstep(double a) {lstep_ = a;} /** Sets the increments for the normal and large step buttons. \param[in] a, b normal and large step increments. */ void step(double a,double b) {Fl_Valuator::step(a); lstep_ = b;} /** Sets the increment for the normal step buttons. \param[in] a normal step increment. */ void step(double a) {Fl_Valuator::step(a);} /** Returns the increment for normal step buttons. */ double step() const {return Fl_Valuator::step();} /** Gets the text font */ Fl_Font textfont() const {return textfont_;} /** Sets the text font to \p s */ void textfont(Fl_Font s) {textfont_ = s;} /** Gets the font size */ Fl_Fontsize textsize() const {return textsize_;} /** Sets the font size to \p s */ void textsize(Fl_Fontsize s) {textsize_ = s;} /** Gets the font color */ Fl_Color textcolor() const {return textcolor_;} /** Sets the font color to \p s */ void textcolor(Fl_Color s) {textcolor_ = s;} }; #endif // // End of "$Id: Fl_Counter.H 6939 2009-11-17 14:45:36Z matt$". // 

Added fltk-1.3/FL/Fl_Dial.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97  // // "$Id: Fl_Dial.H 6614 2009-01-01 16:11:32Z matt$" // // Dial header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Dial widget . */ #ifndef Fl_Dial_H #define Fl_Dial_H #ifndef Fl_Valuator_H #include "Fl_Valuator.H" #endif // values for type(): #define FL_NORMAL_DIAL 0 /**< type() for dial variant with dot */ #define FL_LINE_DIAL 1 /**< type() for dial variant with line */ #define FL_FILL_DIAL 2 /**< type() for dial variant with filled arc */ /** The Fl_Dial widget provides a circular dial to control a single floating point value.

\image html dial.gif \image latex dial.eps "Fl_Dial" width=4cm Use type() to set the type of the dial to:

• FL_NORMAL_DIAL - Draws a normal dial with a knob.
• FL_LINE_DIAL - Draws a dial with a line.
• FL_FILL_DIAL - Draws a dial with a filled arc.
*/ class FL_EXPORT Fl_Dial : public Fl_Valuator { short a1,a2; protected: // these allow subclasses to put the dial in a smaller area: void draw(int X, int Y, int W, int H); int handle(int event, int X, int Y, int W, int H); void draw(); public: int handle(int); /** Creates a new Fl_Dial widget using the given position, size, and label string. The default type is FL_NORMAL_DIAL. */ Fl_Dial(int x,int y,int w,int h, const char *l = 0); /** Sets Or gets the angles used for the minimum and maximum values. The default values are 45 and 315 (0 degrees is straight down and the angles progress clockwise). Normally angle1 is less than angle2, but if you reverse them the dial moves counter-clockwise. */ short angle1() const {return a1;} /** See short angle1() const */ void angle1(short a) {a1 = a;} /** See short angle1() const */ short angle2() const {return a2;} /** See short angle1() const */ void angle2(short a) {a2 = a;} /** See short angle1() const */ void angles(short a, short b) {a1 = a; a2 = b;} }; #endif // // End of "$Id: Fl_Dial.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Double_Window.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81  // // "$Id: Fl_Double_Window.H 6614 2009-01-01 16:11:32Z matt$" // // Double-buffered window header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Double_Window widget . */ #ifndef Fl_Double_Window_H #define Fl_Double_Window_H #include "Fl_Window.H" /** The Fl_Double_Window provides a double-buffered window. If possible this will use the X double buffering extension (Xdbe). If not, it will draw the window data into an off-screen pixmap, and then copy it to the on-screen window.

It is highly recommended that you put the following code before the first show() of any window in your program:

\code Fl::visual(FL_DOUBLE|FL_INDEX) \endcode This makes sure you can use Xdbe on servers where double buffering does not exist for every visual. */ class FL_EXPORT Fl_Double_Window : public Fl_Window { protected: void flush(int eraseoverlay); /** Force double buffering, even if the OS already buffers windows (overlays need that on MacOS and Windows2000) */ char force_doublebuffering_; public: void show(); void show(int a, char **b) {Fl_Window::show(a,b);} void flush(); void resize(int,int,int,int); void hide(); ~Fl_Double_Window(); /** Creates a new Fl_Double_Window widget using the given position, size, and label (title) string. */ Fl_Double_Window(int W, int H, const char *l = 0) : Fl_Window(W,H,l), force_doublebuffering_(0) { type(FL_DOUBLE_WINDOW); } /** See Fl_Double_Window::Fl_Double_Window(int w, int h, const char *label = 0) */ Fl_Double_Window(int X, int Y, int W, int H, const char *l = 0) : Fl_Window(X,Y,W,H,l), force_doublebuffering_(0) { type(FL_DOUBLE_WINDOW); } }; #endif // // End of "$Id: Fl_Double_Window.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Export.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49  /* * "$Id: Fl_Export.H 6614 2009-01-01 16:11:32Z matt$" * * WIN32 DLL export . * * Copyright 1998-2009 by Bill Spitzak and others. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA. * * Please report all bugs and problems on the following page: * * http://www.fltk.org/str.php */ #ifndef Fl_Export_H # define Fl_Export_H /* * The following is only used when building DLLs under WIN32... */ # if defined(FL_DLL) && (defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) || __GNUC__ >= 3) # ifdef FL_LIBRARY # define FL_EXPORT __declspec(dllexport) # else # define FL_EXPORT __declspec(dllimport) # endif /* FL_LIBRARY */ # else # define FL_EXPORT # endif /* FL_DLL */ #endif /* !Fl_Export_H */ /* * End of "$Id: Fl_Export.H 6614 2009-01-01 16:11:32Z matt$". */ 

Added fltk-1.3/FL/Fl_File_Browser.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120  // // "$Id: Fl_File_Browser.H 6614 2009-01-01 16:11:32Z matt$" // // FileBrowser definitions. // // Copyright 1999-2009 by Michael Sweet. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_File_Browser widget . */ // // Include necessary header files... // #ifndef _Fl_File_Browser_H_ # define _Fl_File_Browser_H_ # include "Fl_Browser.H" # include "Fl_File_Icon.H" # include "filename.H" // // Fl_File_Browser class... // /** The Fl_File_Browser widget displays a list of filenames, optionally with file-specific icons. */ class FL_EXPORT Fl_File_Browser : public Fl_Browser { int filetype_; const char *directory_; uchar iconsize_; const char *pattern_; int full_height() const; int item_height(void *) const; int item_width(void *) const; void item_draw(void *, int, int, int, int) const; int incr_height() const { return (item_height(0)); } public: enum { FILES, DIRECTORIES }; /** The constructor creates the Fl_File_Browser widget at the specified position and size. The destructor destroys the widget and frees all memory that has been allocated. */ Fl_File_Browser(int, int, int, int, const char * = 0); /** Sets or gets the size of the icons. The default size is 20 pixels. */ uchar iconsize() const { return (iconsize_); }; /** Sets or gets the size of the icons. The default size is 20 pixels. */ void iconsize(uchar s) { iconsize_ = s; redraw(); }; /** Sets or gets the filename filter. The pattern matching uses the fl_filename_match() function in FLTK. */ void filter(const char *pattern); /** Sets or gets the filename filter. The pattern matching uses the fl_filename_match() function in FLTK. */ const char *filter() const { return (pattern_); }; /** Loads the specified directory into the browser. If icons have been loaded then the correct icon is associated with each file in the list.

The sort argument specifies a sort function to be used with fl_filename_list(). */ int load(const char *directory, Fl_File_Sort_F *sort = fl_numericsort); Fl_Fontsize textsize() const { return Fl_Browser::textsize(); }; void textsize(Fl_Fontsize s) { Fl_Browser::textsize(s); iconsize_ = (uchar)(3 * s / 2); }; /** Sets or gets the file browser type, FILES or DIRECTORIES. When set to FILES, both files and directories are shown. Otherwise only directories are shown. */ int filetype() const { return (filetype_); }; /** Sets or gets the file browser type, FILES or DIRECTORIES. When set to FILES, both files and directories are shown. Otherwise only directories are shown. */ void filetype(int t) { filetype_ = t; }; }; #endif // !_Fl_File_Browser_H_ // // End of "$Id: Fl_File_Browser.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_File_Chooser.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234  // // "$Id: Fl_File_Chooser.H 6678 2009-03-13 23:36:09Z AlbrechtS$" // // Fl_File_Chooser dialog for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // // generated by Fast Light User Interface Designer (fluid) version 1.0300 #ifndef Fl_File_Chooser_H #define Fl_File_Chooser_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class FL_EXPORT Fl_File_Chooser { public: enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 }; private: static Fl_Preferences prefs_; void (*callback_)(Fl_File_Chooser*, void *); void *data_; char directory_[1024]; char pattern_[1024]; char preview_text_[2048]; int type_; void favoritesButtonCB(); void favoritesCB(Fl_Widget *w); void fileListCB(); void fileNameCB(); void newdir(); static void previewCB(Fl_File_Chooser *fc); void showChoiceCB(); void update_favorites(); void update_preview(); public: Fl_File_Chooser(const char *d, const char *p, int t, const char *title); private: Fl_Double_Window *window; void cb_window_i(Fl_Double_Window*, void*); static void cb_window(Fl_Double_Window*, void*); Fl_Choice *showChoice; void cb_showChoice_i(Fl_Choice*, void*); static void cb_showChoice(Fl_Choice*, void*); Fl_Menu_Button *favoritesButton; void cb_favoritesButton_i(Fl_Menu_Button*, void*); static void cb_favoritesButton(Fl_Menu_Button*, void*); public: Fl_Button *newButton; private: void cb_newButton_i(Fl_Button*, void*); static void cb_newButton(Fl_Button*, void*); void cb__i(Fl_Tile*, void*); static void cb_(Fl_Tile*, void*); Fl_File_Browser *fileList; void cb_fileList_i(Fl_File_Browser*, void*); static void cb_fileList(Fl_File_Browser*, void*); Fl_Box *previewBox; public: Fl_Check_Button *previewButton; private: void cb_previewButton_i(Fl_Check_Button*, void*); static void cb_previewButton(Fl_Check_Button*, void*); Fl_File_Input *fileName; void cb_fileName_i(Fl_File_Input*, void*); static void cb_fileName(Fl_File_Input*, void*); Fl_Return_Button *okButton; void cb_okButton_i(Fl_Return_Button*, void*); static void cb_okButton(Fl_Return_Button*, void*); Fl_Button *cancelButton; void cb_cancelButton_i(Fl_Button*, void*); static void cb_cancelButton(Fl_Button*, void*); Fl_Double_Window *favWindow; Fl_File_Browser *favList; void cb_favList_i(Fl_File_Browser*, void*); static void cb_favList(Fl_File_Browser*, void*); Fl_Button *favUpButton; void cb_favUpButton_i(Fl_Button*, void*); static void cb_favUpButton(Fl_Button*, void*); Fl_Button *favDeleteButton; void cb_favDeleteButton_i(Fl_Button*, void*); static void cb_favDeleteButton(Fl_Button*, void*); Fl_Button *favDownButton; void cb_favDownButton_i(Fl_Button*, void*); static void cb_favDownButton(Fl_Button*, void*); Fl_Button *favCancelButton; void cb_favCancelButton_i(Fl_Button*, void*); static void cb_favCancelButton(Fl_Button*, void*); Fl_Return_Button *favOkButton; void cb_favOkButton_i(Fl_Return_Button*, void*); static void cb_favOkButton(Fl_Return_Button*, void*); public: ~Fl_File_Chooser(); void callback(void (*cb)(Fl_File_Chooser *, void *), void *d = 0); void color(Fl_Color c); Fl_Color color(); int count(); void directory(const char *d); char * directory(); void filter(const char *p); const char * filter(); int filter_value(); void filter_value(int f); void hide(); void iconsize(uchar s); uchar iconsize(); void label(const char *l); const char * label(); void ok_label(const char *l); const char * ok_label(); void preview(int e); int preview() const { return previewButton->value(); }; void rescan(); void rescan_keep_filename(); void show(); int shown(); void textcolor(Fl_Color c); Fl_Color textcolor(); void textfont(Fl_Font f); Fl_Font textfont(); void textsize(Fl_Fontsize s); Fl_Fontsize textsize(); void type(int t); int type(); void * user_data() const; void user_data(void *d); const char *value(int f = 1); void value(const char *filename); int visible(); /** [standard text may be customized at run-time] */ static const char *add_favorites_label; /** [standard text may be customized at run-time] */ static const char *all_files_label; /** [standard text may be customized at run-time] */ static const char *custom_filter_label; /** [standard text may be customized at run-time] */ static const char *existing_file_label; /** [standard text may be customized at run-time] */ static const char *favorites_label; /** [standard text may be customized at run-time] */ static const char *filename_label; /** [standard text may be customized at run-time] */ static const char *filesystems_label; /** [standard text may be customized at run-time] */ static const char *manage_favorites_label; /** [standard text may be customized at run-time] */ static const char *new_directory_label; /** [standard text may be customized at run-time] */ static const char *new_directory_tooltip; /** [standard text may be customized at run-time] */ static const char *preview_label; /** [standard text may be customized at run-time] */ static const char *save_label; /** [standard text may be customized at run-time] */ static const char *show_label; /** the sort function that is used when loading the contents of a directory. */ static Fl_File_Sort_F *sort; private: Fl_Widget* ext_group; public: Fl_Widget* add_extra(Fl_Widget* gr); }; FL_EXPORT char *fl_dir_chooser(const char *message,const char *fname,int relative=0); FL_EXPORT char *fl_file_chooser(const char *message,const char *pat,const char *fname,int relative=0); FL_EXPORT void fl_file_chooser_callback(void (*cb)(const char*)); FL_EXPORT void fl_file_chooser_ok_label(const char*l); #endif // // End of "$Id: Fl_File_Chooser.H 6678 2009-03-13 23:36:09Z AlbrechtS$". // 

Added fltk-1.3/FL/Fl_File_Icon.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168  // // "$Id: Fl_File_Icon.H 6614 2009-01-01 16:11:32Z matt$" // // Fl_File_Icon definitions. // // Copyright 1999-2009 by Michael Sweet. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_File_Icon widget . */ // // Include necessary header files... // #ifndef _Fl_Fl_File_Icon_H_ # define _Fl_Fl_File_Icon_H_ # include "Fl.H" // // Special color value for the icon color. // # define FL_ICON_COLOR (Fl_Color)0xffffffff /**< icon color [background?]*/ // // Fl_File_Icon class... // /** The Fl_File_Icon class manages icon images that can be used as labels in other widgets and as icons in the FileBrowser widget. */ class FL_EXPORT Fl_File_Icon //// Icon data { static Fl_File_Icon *first_; // Pointer to first icon/filetype Fl_File_Icon *next_; // Pointer to next icon/filetype const char *pattern_; // Pattern string int type_; // Match only if directory or file? int num_data_; // Number of data elements int alloc_data_; // Number of allocated elements short *data_; // Icon data public: enum // File types { ANY, // Any kind of file PLAIN, // Only plain files FIFO, // Only named pipes DEVICE, // Only character and block devices LINK, // Only symbolic links DIRECTORY // Only directories }; enum // Data opcodes { END, // End of primitive/icon COLOR, // Followed by color value (2 shorts) LINE, // Start of line CLOSEDLINE, // Start of closed line POLYGON, // Start of polygon OUTLINEPOLYGON, // Followed by outline color (2 shorts) VERTEX // Followed by scaled X,Y }; Fl_File_Icon(const char *p, int t, int nd = 0, short *d = 0); ~Fl_File_Icon(); short *add(short d); /** Adds a color value to the icon array, returning a pointer to it. \param[in] c color value */ short *add_color(Fl_Color c) { short *d = add((short)COLOR); add((short)(c >> 16)); add((short)c); return (d); } /** Adds a vertex value to the icon array, returning a pointer to it. The integer version accepts coordinates from 0 to 10000. The origin (0.0) is in the lower-lefthand corner of the icon. \param[in] x, y vertex coordinates */ short *add_vertex(int x, int y) { short *d = add((short)VERTEX); add((short)x); add((short)y); return (d); } /** Adds a vertex value to the icon array, returning a pointer to it. The floating point version goes from 0.0 to 1.0. The origin (0.0) is in the lower-lefthand corner of the icon. \param[in] x, y vertex coordinates */ short *add_vertex(float x, float y) { short *d = add((short)VERTEX); add((short)(x * 10000.0)); add((short)(y * 10000.0)); return (d); } /** Clears all icon data from the icon.*/ void clear() { num_data_ = 0; } void draw(int x, int y, int w, int h, Fl_Color ic, int active = 1); void label(Fl_Widget *w); static void labeltype(const Fl_Label *o, int x, int y, int w, int h, Fl_Align a); void load(const char *f); int load_fti(const char *fti); int load_image(const char *i); /** Returns next file icon object. See Fl_File_Icon::first() */ Fl_File_Icon *next() { return (next_); } /** Returns the filename matching pattern for the icon.*/ const char *pattern() { return (pattern_); } /** Returns the number of words of data used by the icon.*/ int size() { return (num_data_); } /** Returns the filetype associated with the icon, which can be one of the following: \li Fl_File_Icon::ANY, any kind of file. \li Fl_File_Icon::PLAIN, plain files. \li Fl_File_Icon::FIFO, named pipes. \li Fl_File_Icon::DEVICE, character and block devices. \li Fl_File_Icon::LINK, symbolic links. \li Fl_File_Icon::DIRECTORY, directories. */ int type() { return (type_); } /** Returns the data array for the icon.*/ short *value() { return (data_); } static Fl_File_Icon *find(const char *filename, int filetype = ANY); /** Returns a pointer to the first icon in the list.*/ static Fl_File_Icon *first() { return (first_); } static void load_system_icons(void); }; #endif // !_Fl_Fl_File_Icon_H_ // // End of "$Id: Fl_File_Icon.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_File_Input.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104  // // "$Id: Fl_File_Input.H 6716 2009-03-24 01:40:44Z fabien$" // // File_Input header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // Original version Copyright 1998 by Curtis Edwards. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_File_Input widget . */ #ifndef Fl_File_Input_H # define Fl_File_Input_H # include /** \class Fl_File_Input \brief This widget displays a pathname in a text input field. A navigation bar located above the input field allows the user to navigate upward in the directory tree. You may want to handle FL_WHEN_CHANGED events for tracking text changes and also FL_WHEN_RELEASE for button release when changing to parent dir. FL_WHEN_RELEASE callback won't be called if the directory clicked is the same that the current one.

\image html Fl_File_Input.gif

\image latex Fl_File_Input.eps "Fl_File_Input" width=6cm \note As all Fl_Input derived objects, Fl_File_Input may call its callback when loosing focus (see FL_UNFOCUS) to update its state like its cursor shape. One resulting side effect is that you should call clear_changed() early in your callback to avoid reentrant calls if you plan to show another window or dialog box in the callback. */ class FL_EXPORT Fl_File_Input : public Fl_Input { Fl_Color errorcolor_; char ok_entry_; uchar down_box_; short buttons_[200]; short pressed_; void draw_buttons(); int handle_button(int event); void update_buttons(); public: Fl_File_Input(int X, int Y, int W, int H, const char *L=0); virtual int handle(int event); protected: virtual void draw(); public: /** Gets the box type used for the navigation bar. */ Fl_Boxtype down_box() const { return (Fl_Boxtype)down_box_; } /** Sets the box type to use for the navigation bar. */ void down_box(Fl_Boxtype b) { down_box_ = b; } /** Gets the current error color. \todo Better docs for Fl_File_Input::errorcolor() - is it even used? */ Fl_Color errorcolor() const { return errorcolor_; } /** Sets the current error color to \p c */ void errorcolor(Fl_Color c) { errorcolor_ = c; } int value(const char *str); int value(const char *str, int len); /** Returns the current value, which is a pointer to an internal buffer and is valid only until the next event is handled. */ const char *value() { return Fl_Input_::value(); } }; #endif // !Fl_File_Input_H // // End of "$Id: Fl_File_Input.H 6716 2009-03-24 01:40:44Z fabien$". // 

Added fltk-1.3/FL/Fl_Fill_Dial.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48  // // "$Id: Fl_Fill_Dial.H 6614 2009-01-01 16:11:32Z matt$" // // Filled dial header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Fill_Dial widget . */ #ifndef Fl_Fill_Dial_H #define Fl_Fill_Dial_H #include "Fl_Dial.H" /** Draws a dial with a filled arc */ class Fl_Fill_Dial : public Fl_Dial { public: /** Creates a filled dial, also setting its type to FL_FILL_DIAL. */ Fl_Fill_Dial(int x,int y,int w,int h, const char *l = 0) : Fl_Dial(x,y,w,h,l) {type(FL_FILL_DIAL);} }; #endif // // End of "$Id: Fl_Fill_Dial.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Fill_Slider.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47  // // "$Id: Fl_Fill_Slider.H 6614 2009-01-01 16:11:32Z matt$" // // Filled slider header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Fill_Slider widget . */ #ifndef Fl_Fill_Slider_H #define Fl_Fill_Slider_H #include "Fl_Slider.H" /** Widget that draws a filled horizontal slider, useful as a progress or value meter*/ class Fl_Fill_Slider : public Fl_Slider { public: /** Creates the slider from its position,size and optional title. */ Fl_Fill_Slider(int x,int y,int w,int h,const char *l=0) : Fl_Slider(x,y,w,h,l) {type(FL_VERT_FILL_SLIDER);} }; #endif // // End of "$Id: Fl_Fill_Slider.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Float_Input.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57  // // "$Id: Fl_Float_Input.H 6614 2009-01-01 16:11:32Z matt$" // // Floating point input header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Float_Input widget . */ #ifndef Fl_Float_Input_H #define Fl_Float_Input_H #include "Fl_Input.H" /** The Fl_Float_Input class is a subclass of Fl_Input that only allows the user to type floating point numbers (sign, digits, decimal point, more digits, 'E' or 'e', sign, digits). */ class Fl_Float_Input : public Fl_Input { public: /** Creates a new Fl_Float_Input widget using the given position, size, and label string. The default boxtype is FL_DOWN_BOX.

Inherited destructor destroys the widget and any value associated with it */ Fl_Float_Input(int X,int Y,int W,int H,const char *l = 0) : Fl_Input(X,Y,W,H,l) {type(FL_FLOAT_INPUT);} }; #endif // // End of "$Id: Fl_Float_Input.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_FormsBitmap.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56  // // "$Id: Fl_FormsBitmap.H 6614 2009-01-01 16:11:32Z matt$" // // Forms bitmap header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_FormsBitmap widget . */ #ifndef Fl_FormsBitmap_H #define Fl_FormsBitmap_H #include "Fl_Bitmap.H" /** Forms compatibility Bitmap Image Widget */ class FL_EXPORT Fl_FormsBitmap : public Fl_Widget { Fl_Bitmap *b; protected: void draw(); public: Fl_FormsBitmap(Fl_Boxtype, int, int, int, int, const char * = 0); void set(int W, int H, const uchar *bits); /** Sets a new bitmap. */ void bitmap(Fl_Bitmap *B) {b = B;} /** Gets a the current associated Fl_Bitmap objects. */ Fl_Bitmap *bitmap() const {return b;} }; #endif // // End of "$Id: Fl_FormsBitmap.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_FormsPixmap.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63  // // "$Id: Fl_FormsPixmap.H 6614 2009-01-01 16:11:32Z matt$" // // Forms pixmap header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_FormsPixmap widget . */ #ifndef Fl_FormsPixmap_H #define Fl_FormsPixmap_H #include "Fl_Pixmap.H" /** \class Fl_FormsPixmap \brief Forms pixmap drawing routines */ class FL_EXPORT Fl_FormsPixmap : public Fl_Widget { Fl_Pixmap *b; protected: void draw(); public: Fl_FormsPixmap(Fl_Boxtype t, int X, int Y, int W, int H, const char *L= 0); void set(/*const*/char * const * bits); /** Set the internal pixmap pointer to an existing pixmap. \param[in] B existing pixmap */ void Pixmap(Fl_Pixmap *B) {b = B;} /** Get the internal pixmap pointer. */ Fl_Pixmap *Pixmap() const {return b;} }; #endif // // End of "$Id: Fl_FormsPixmap.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Free.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89  // // "$Id: Fl_Free.H 6614 2009-01-01 16:11:32Z matt$" // // Forms free header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Free widget . */ #ifndef Fl_Free_H #define Fl_Free_H #ifndef Fl_Widget_H #include "Fl_Widget.H" #endif #define FL_NORMAL_FREE 1 /**< normal event handling */ #define FL_SLEEPING_FREE 2 /**< deactivate event handling */ #define FL_INPUT_FREE 3 /**< accepts FL_FOCUS events */ #define FL_CONTINUOUS_FREE 4 /**< repeated timeout handling */ #define FL_ALL_FREE 5 /**< FL_INPUT_FREE and FL_CONTINOUS_FREE */ /** appropriate signature for handle function */ typedef int (*FL_HANDLEPTR)(Fl_Widget *, int , float, float, char); /** Emulation of the Forms "free" widget. This emulation allows the free demo to run, and appears to be useful for porting programs written in Forms which use the free widget or make subclasses of the Forms widgets. There are five types of free, which determine when the handle function is called: \li \c FL_NORMAL_FREE normal event handling. \li \c FL_SLEEPING_FREE deactivates event handling (widget is inactive). \li \c FL_INPUT_FREE accepts FL_FOCUS events. \li \c FL_CONTINUOUS_FREE sets a timeout callback 100 times a second and provides an FL_STEP event. This has obvious detrimental effects on machine performance. \li \c FL_ALL_FREE same as FL_INPUT_FREE and FL_CONTINUOUS_FREE. */ class FL_EXPORT Fl_Free : public Fl_Widget { FL_HANDLEPTR hfunc; static void step(void *); protected: void draw(); public: int handle(int e); Fl_Free(uchar t,int X,int Y,int W,int H,const char *L,FL_HANDLEPTR hdl); ~Fl_Free(); }; // old event names for compatibility: #define FL_MOUSE FL_DRAG /**< for backward compatibility */ #define FL_DRAW 100 /**< for backward compatibility [UNUSED]*/ #define FL_STEP 101 /**< for backward compatibility */ #define FL_FREEMEM 102 /**< for backward compatibility [UNUSED]*/ #define FL_FREEZE 103 /**< for backward compatibility [UNUSED]*/ #define FL_THAW 104 /**< for backward compatibility [UNUSED]*/ #endif // // End of "$Id: Fl_Free.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_GIF_Image.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51  // // "$Id: Fl_GIF_Image.H 6614 2009-01-01 16:11:32Z matt$" // // GIF image header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_GIF_Image widget . */ #ifndef Fl_GIF_Image_H #define Fl_GIF_Image_H # include "Fl_Pixmap.H" /** The Fl_GIF_Image class supports loading, caching, and drawing of Compuserve GIFSM images. The class loads the first image and supports transparency. */ class FL_EXPORT Fl_GIF_Image : public Fl_Pixmap { public: Fl_GIF_Image(const char* filename); }; #endif // // End of "$Id: Fl_GIF_Image.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Gl_Window.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236  // // "$Id: Fl_Gl_Window.H 6664 2009-02-18 09:27:54Z AlbrechtS$" // // OpenGL header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Gl_Window widget . */ #ifndef Fl_Gl_Window_H #define Fl_Gl_Window_H #include "Fl_Window.H" #ifndef GLContext /** Opaque pointer type to hide system specific implementation. */ typedef void* GLContext; // actually a GLXContext or HGLDC #endif class Fl_Gl_Choice; // structure to hold result of glXChooseVisual /** The Fl_Gl_Window widget sets things up so OpenGL works. It also keeps an OpenGL "context" for that window, so that changes to the lighting and projection may be reused between redraws. Fl_Gl_Window also flushes the OpenGL streams and swaps buffers after draw() returns. OpenGL hardware typically provides some overlay bit planes, which are very useful for drawing UI controls atop your 3D graphics. If the overlay hardware is not provided, FLTK tries to simulate the overlay. This works pretty well if your graphics are double buffered, but not very well for single-buffered. Please note that the FLTK drawing and clipping functions will not work inside an Fl_Gl_Window. All drawing should be done using OpenGL calls exclusively. Even though Fl_Gl_Window is derived from Fl_Group, it is not useful to add other FLTK Widgets as children, unless those widgets are modified to draw using OpenGL calls. */ class FL_EXPORT Fl_Gl_Window : public Fl_Window { int mode_; const int *alist; Fl_Gl_Choice *g; GLContext context_; char valid_f_; char damage1_; // damage() of back buffer virtual void draw_overlay(); void init(); void *overlay; void make_overlay(); friend class _Fl_Gl_Overlay; static int can_do(int, const int *); int mode(int, const int *); public: void show(); void show(int a, char **b) {Fl_Window::show(a,b);} void flush(); void hide(); void resize(int,int,int,int); /** Is turned off when FLTK creates a new context for this window or when the window resizes, and is turned on \e after draw() is called. You can use this inside your draw() method to avoid unnecessarily initializing the OpenGL context. Just do this: \code void mywindow::draw() { if (!valid()) { glViewport(0,0,w(),h()); glFrustum(...); ...other initialization... } if (!context_valid()) { ...load textures, etc. ... } ... draw your geometry here ... } \endcode You can turn valid() on by calling valid(1). You should only do this after fixing the transformation inside a draw() or after make_current(). This is done automatically after draw() returns. */ char valid() const {return valid_f_ & 1;} /** See char Fl_Gl_Window::valid() const */ void valid(char v) {if (v) valid_f_ |= 1; else valid_f_ &= 0xfe;} void invalidate(); /** Will only be set if the OpenGL context is created or recreated. It differs from Fl_Gl_Window::valid() which is also set whenever the context changes size. */ char context_valid() const {return valid_f_ & 2;} /** See char Fl_Gl_Window::context_valid() const */ void context_valid(char v) {if (v) valid_f_ |= 2; else valid_f_ &= 0xfd;} /** Returns non-zero if the hardware supports the given or current OpenGL mode. */ static int can_do(int m) {return can_do(m,0);} /** Returns non-zero if the hardware supports the given or current OpenGL mode. */ static int can_do(const int *m) {return can_do(0, m);} /** Returns non-zero if the hardware supports the given or current OpenGL mode. */ int can_do() {return can_do(mode_,alist);} /** Set or change the OpenGL capabilites of the window. The value can be any of the following OR'd together: - \c FL_RGB - RGB color (not indexed) - \c FL_RGB8 - RGB color with at least 8 bits of each color - \c FL_INDEX - Indexed mode - \c FL_SINGLE - not double buffered - \c FL_DOUBLE - double buffered - \c FL_ACCUM - accumulation buffer - \c FL_ALPHA - alpha channel in color - \c FL_DEPTH - depth buffer - \c FL_STENCIL - stencil buffer - \c FL_MULTISAMPLE - multisample antialiasing FL_RGB and FL_SINGLE have a value of zero, so they are "on" unless you give FL_INDEX or FL_DOUBLE. If the desired combination cannot be done, FLTK will try turning off FL_MULTISAMPLE. If this also fails the show() will call Fl::error() and not show the window. You can change the mode while the window is displayed. This is most useful for turning double-buffering on and off. Under X this will cause the old X window to be destroyed and a new one to be created. If this is a top-level window this will unfortunately also cause the window to blink, raise to the top, and be de-iconized, and the xid() will change, possibly breaking other code. It is best to make the GL window a child of another window if you wish to do this! mode() must not be called within draw() since it changes the current context. */ Fl_Mode mode() const {return (Fl_Mode)mode_;} /** See Fl_Mode mode() const */ int mode(int a) {return mode(a,0);} /** See Fl_Mode mode() const */ int mode(const int *a) {return mode(0, a);} /** void See void context(void* v, int destroy_flag) */ void* context() const {return context_;} void context(void*, int destroy_flag = 0); void make_current(); void swap_buffers(); void ortho(); /** Returns true if the hardware overlay is possible. If this is false, FLTK will try to simulate the overlay, with significant loss of update speed. Calling this will cause FLTK to open the display. */ int can_do_overlay(); /** This method causes draw_overlay() to be called at a later time. Initially the overlay is clear. If you want the window to display something in the overlay when it first appears, you must call this immediately after you show() your window. */ void redraw_overlay(); void hide_overlay(); /** The make_overlay_current() method selects the OpenGL context for the widget's overlay. It is called automatically prior to the draw_overlay() method being called and can also be used to implement feedback and/or selection within the handle() method. */ void make_overlay_current(); ~Fl_Gl_Window(); /** Creates a new Fl_Gl_Window widget using the given size, and label string. The default boxtype is FL_NO_BOX. The default mode is FL_RGB|FL_DOUBLE|FL_DEPTH. */ Fl_Gl_Window(int W, int H, const char *l=0) : Fl_Window(W,H,l) {init();} /** Creates a new Fl_Gl_Window widget using the given position, size, and label string. The default boxtype is FL_NO_BOX. The default mode is FL_RGB|FL_DOUBLE|FL_DEPTH. */ Fl_Gl_Window(int X, int Y, int W, int H, const char *l=0) : Fl_Window(X,Y,W,H,l) {init();} protected: /** Draws the Fl_Gl_Window. You \e \b must override the draw() method. */ virtual void draw(); }; #endif // // End of "$Id: Fl_Gl_Window.H 6664 2009-02-18 09:27:54Z AlbrechtS$". // 

Added fltk-1.3/FL/Fl_Group.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226  // // "$Id: Fl_Group.H 6907 2009-09-28 14:34:52Z matt$" // // Group header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Group, Fl_End classes . */ #ifndef Fl_Group_H #define Fl_Group_H #ifndef Fl_Widget_H #include "Fl_Widget.H" #endif /** The Fl_Group class is the FLTK container widget. It maintains an array of child widgets. These children can themselves be any widget including Fl_Group. The most important subclass of Fl_Group is Fl_Window, however groups can also be used to control radio buttons or to enforce resize behavior. */ class FL_EXPORT Fl_Group : public Fl_Widget { Fl_Widget** array_; Fl_Widget* savedfocus_; Fl_Widget* resizable_; int children_; int *sizes_; // remembered initial sizes of children int navigation(int); static Fl_Group *current_; // unimplemented copy ctor and assignment operator Fl_Group(const Fl_Group&); Fl_Group& operator=(const Fl_Group&); protected: void draw(); void draw_child(Fl_Widget& widget) const; void draw_children(); void draw_outside_label(const Fl_Widget& widget) const ; void update_child(Fl_Widget& widget) const; int *sizes(); public: int handle(int); void begin(); void end(); static Fl_Group *current(); static void current(Fl_Group *g); /** Returns how many child widgets the group has. */ int children() const {return children_;} /** Returns array()[n]. No range checking is done! */ Fl_Widget* child(int n) const {return array()[n];} int find(const Fl_Widget*) const; /** See int Fl_Group::find(const Fl_Widget *w) const */ int find(const Fl_Widget& o) const {return find(&o);} Fl_Widget* const* array() const; void resize(int,int,int,int); /** Creates a new Fl_Group widget using the given position, size, and label string. The default boxtype is FL_NO_BOX. */ Fl_Group(int,int,int,int, const char * = 0); virtual ~Fl_Group(); void add(Fl_Widget&); /** See void Fl_Group::add(Fl_Widget &w) */ void add(Fl_Widget* o) {add(*o);} void insert(Fl_Widget&, int i); /** This does insert(w, find(before)). This will append the widget if \p before is not in the group. */ void insert(Fl_Widget& o, Fl_Widget* before) {insert(o,find(before));} void remove(Fl_Widget&); /** Removes the widget \p o from the group. \sa void remove(Fl_Widget&) */ void remove(Fl_Widget* o) {remove(*o);} void clear(); /** See void Fl_Group::resizable(Fl_Widget *box) */ void resizable(Fl_Widget& o) {resizable_ = &o;} /** The resizable widget defines the resizing box for the group. When the group is resized it calculates a new size and position for all of its children. Widgets that are horizontally or vertically inside the dimensions of the box are scaled to the new size. Widgets outside the box are moved. In these examples the gray area is the resizable: \image html resizebox1.gif \image html resizebox2.gif \image latex resizebox1.eps "before resize" width=4cm \image latex resizebox2.eps "after resize" width=4cm The resizable may be set to the group itself, in which case all the contents are resized. This is the default value for Fl_Group, although NULL is the default for Fl_Window and Fl_Pack. If the resizable is NULL then all widgets remain a fixed size and distance from the top-left corner. It is possible to achieve any type of resize behavior by using an invisible Fl_Box as the resizable and/or by using a hierarchy of child Fl_Group's. */ void resizable(Fl_Widget* o) {resizable_ = o;} /** See void Fl_Group::resizable(Fl_Widget *box) */ Fl_Widget* resizable() const {return resizable_;} /** Adds a widget to the group and makes it the resizable widget. */ void add_resizable(Fl_Widget& o) {resizable_ = &o; add(o);} void init_sizes(); /** Controls whether the group widget clips the drawing of child widgets to its bounding box. Set \p c to 1 if you want to clip the child widgets to the bounding box. The default is to not clip (0) the drawing of child widgets. */ void clip_children(int c) { if (c) set_flag(CLIP_CHILDREN); else clear_flag(CLIP_CHILDREN); } /** Returns the current clipping mode. \return true, if clipping is enabled, false otherwise. \see void Fl_Group::clip_children(int c) */ unsigned int clip_children() { return (flags() & CLIP_CHILDREN) != 0; } // back compatibility functions: /** \deprecated This is for backwards compatibility only. You should use \e W->%take_focus() instead. \sa Fl_Widget::take_focus(); */ void focus(Fl_Widget* W) {W->take_focus();} /** This is for forms compatibility only */ Fl_Widget* & _ddfdesign_kludge() {return resizable_;} /** This is for forms compatibility only */ void forms_end(); }; // dummy class used to end child groups in constructors for complex // subclasses of Fl_Group: /** This is a dummy class that allows you to end a Fl_Group in a constructor list of a class: \code class MyClass { Fl_Group group; Fl_Button button_in_group; Fl_End end; Fl_Button button_outside_group; MyClass(); }; MyClass::MyClass() : group(10,10,100,100), button_in_group(20,20,60,30), end(), button_outside_group(10,120,60,30) {} \endcode */ class FL_EXPORT Fl_End { public: /** All it does is calling Fl_Group::current()->end() */ Fl_End() {Fl_Group::current()->end();} }; #endif // // End of "$Id: Fl_Group.H 6907 2009-09-28 14:34:52Z matt$". // 

Added fltk-1.3/FL/Fl_Help_Dialog.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95  // // "$Id: Fl_Help_Dialog.H 6614 2009-01-01 16:11:32Z matt$" // // Fl_Help_Dialog dialog for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Help_Dialog widget . */ // generated by Fast Light User Interface Designer (fluid) version 1.0108 #ifndef Fl_Help_Dialog_H #define Fl_Help_Dialog_H #include #include #include #include #include #include #include class FL_EXPORT Fl_Help_Dialog { int index_; int max_; int line_[100]; char file_[100][256]; int find_pos_; public: Fl_Help_Dialog(); private: Fl_Double_Window *window_; Fl_Button *back_; void cb_back__i(Fl_Button*, void*); static void cb_back_(Fl_Button*, void*); Fl_Button *forward_; void cb_forward__i(Fl_Button*, void*); static void cb_forward_(Fl_Button*, void*); Fl_Button *smaller_; void cb_smaller__i(Fl_Button*, void*); static void cb_smaller_(Fl_Button*, void*); Fl_Button *larger_; void cb_larger__i(Fl_Button*, void*); static void cb_larger_(Fl_Button*, void*); Fl_Input *find_; void cb_find__i(Fl_Input*, void*); static void cb_find_(Fl_Input*, void*); Fl_Help_View *view_; void cb_view__i(Fl_Help_View*, void*); static void cb_view_(Fl_Help_View*, void*); public: ~Fl_Help_Dialog(); int h(); void hide(); void load(const char *f); void position(int xx, int yy); void resize(int xx, int yy, int ww, int hh); void show(); void show(int argc, char **argv); void textsize(Fl_Fontsize s); Fl_Fontsize textsize(); void topline(const char *n); void topline(int n); void value(const char *f); const char * value() const; int visible(); int w(); int x(); int y(); }; #endif // // End of "$Id: Fl_Help_Dialog.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Help_View.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338  // // "$Id: Fl_Help_View.H 6743 2009-04-07 17:33:22Z AlbrechtS$" // // Help Viewer widget definitions. // // Copyright 1997-2009 by Easy Software Products. // Image support by Matthias Melcher, Copyright 2000-2009. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Help_View widget . */ #ifndef Fl_Help_View_H # define Fl_Help_View_H // // Include necessary header files... // # include # include "Fl.H" # include "Fl_Group.H" # include "Fl_Scrollbar.H" # include "fl_draw.H" # include "Fl_Shared_Image.H" // // Fl_Help_Func type - link callback function for files... // typedef const char *(Fl_Help_Func)(Fl_Widget *, const char *); // // Fl_Help_Block structure... // struct Fl_Help_Block { const char *start, // Start of text *end; // End of text uchar border; // Draw border? Fl_Color bgcolor; // Background color int x, // Indentation/starting X coordinate y, // Starting Y coordinate w, // Width h; // Height int line[32]; // Left starting position for each line }; // // Fl_Help_Link structure... // /** Definition of a link for the html viewer. */ struct Fl_Help_Link { char filename[192], ///< Reference filename name[32]; ///< Link target (blank if none) int x, ///< X offset of link text y, ///< Y offset of link text w, ///< Width of link text h; ///< Height of link text }; /* * Fl_Help_View font stack opaque implementation */ /** Fl_Help_View font stack element definition. */ struct Fl_Help_Font_Style { Fl_Font f; ///< Font Fl_Fontsize s; ///< Font Size Fl_Color c; ///< Font Color void get(Fl_Font &afont, Fl_Fontsize &asize, Fl_Color &acolor) {afont=f; asize=s; acolor=c;} ///< Gets current font attributes void set(Fl_Font afont, Fl_Fontsize asize, Fl_Color acolor) {f=afont; s=asize; c=acolor;} ///< Sets current font attributes Fl_Help_Font_Style(Fl_Font afont, Fl_Fontsize asize, Fl_Color acolor) {set(afont, asize, acolor);} Fl_Help_Font_Style(){} // For in table use }; /** Fl_Help_View font stack definition. */ const size_t MAX_FL_HELP_FS_ELTS = 100; struct Fl_Help_Font_Stack { /** font stack construction, initialize attributes. */ Fl_Help_Font_Stack() { nfonts_ = 0; } void init(Fl_Font f, Fl_Fontsize s, Fl_Color c) { nfonts_ = 0; elts_[nfonts_].set(f, s, c); fl_font(f, s); fl_color(c); } /** Gets the top (current) element on the stack. */ void top(Fl_Font &f, Fl_Fontsize &s, Fl_Color &c) { elts_[nfonts_].get(f, s, c); } /** Pushes the font style triplet on the stack, also calls fl_font() & fl_color() adequately */ void push(Fl_Font f, Fl_Fontsize s, Fl_Color c) { if (nfonts_ < MAX_FL_HELP_FS_ELTS-1) nfonts_ ++; elts_[nfonts_].set(f, s, c); fl_font(f, s); fl_color(c); } /** Pops from the stack the font style triplet and calls fl_font() & fl_color() adequately */ void pop(Fl_Font &f, Fl_Fontsize &s, Fl_Color &c) { if (nfonts_ > 0) nfonts_ --; top(f, s, c); fl_font(f, s); fl_color(c); } /** Gets the current count of font style elements in the stack. */ size_t count() const {return nfonts_;} // Gets the current number of fonts in the stack protected: size_t nfonts_; ///< current number of fonts in stack Fl_Help_Font_Style elts_[100]; ///< font elements }; /** Fl_Help_Target structure */ struct Fl_Help_Target { char name[32]; ///< Target name int y; ///< Y offset of target }; /** The Fl_Help_View widget displays HTML text. Most HTML 2.0 elements are supported, as well as a primitive implementation of tables. GIF, JPEG, and PNG images are displayed inline. */ class FL_EXPORT Fl_Help_View : public Fl_Group // Help viewer widget { enum { RIGHT = -1, CENTER, LEFT }; ///< Alignments char title_[1024]; ///< Title string Fl_Color defcolor_, ///< Default text color bgcolor_, ///< Background color textcolor_, ///< Text color linkcolor_; ///< Link color Fl_Font textfont_; ///< Default font for text Fl_Fontsize textsize_; ///< Default font size const char *value_; ///< HTML text value Fl_Help_Font_Stack fstack_; ///< font stack management int nblocks_, ///< Number of blocks/paragraphs ablocks_; ///< Allocated blocks Fl_Help_Block *blocks_; ///< Blocks Fl_Help_Func *link_; ///< Link transform function int nlinks_, ///< Number of links alinks_; ///< Allocated links Fl_Help_Link *links_; ///< Links int ntargets_, ///< Number of targets atargets_; ///< Allocated targets Fl_Help_Target *targets_; ///< Targets char directory_[1024]; ///< Directory for current file char filename_[1024]; ///< Current filename int topline_, ///< Top line in document leftline_, ///< Lefthand position size_, ///< Total document length hsize_, ///< Maximum document width scrollbar_size_; ///< Size for both scrollbars Fl_Scrollbar scrollbar_, ///< Vertical scrollbar for document hscrollbar_; ///< Horizontal scrollbar static int selection_first; static int selection_last; static int selection_push_first; static int selection_push_last; static int selection_drag_first; static int selection_drag_last; static int selected; static int draw_mode; static int mouse_x; static int mouse_y; static int current_pos; static Fl_Help_View *current_view; static Fl_Color hv_selection_color; static Fl_Color hv_selection_text_color; void initfont(Fl_Font &f, Fl_Fontsize &s, Fl_Color &c) { f = textfont_; s = textsize_; c = textcolor_; fstack_.init(f, s, c); } void pushfont(Fl_Font f, Fl_Fontsize s) {fstack_.push(f, s, textcolor_);} void pushfont(Fl_Font f, Fl_Fontsize s, Fl_Color c) {fstack_.push(f, s, c);} void popfont(Fl_Font &f, Fl_Fontsize &s, Fl_Color &c) {fstack_.pop(f, s, c);} Fl_Help_Block *add_block(const char *s, int xx, int yy, int ww, int hh, uchar border = 0); void add_link(const char *n, int xx, int yy, int ww, int hh); void add_target(const char *n, int yy); static int compare_targets(const Fl_Help_Target *t0, const Fl_Help_Target *t1); int do_align(Fl_Help_Block *block, int line, int xx, int a, int &l); void draw(); void format(); void format_table(int *table_width, int *columns, const char *table); void free_data(); int get_align(const char *p, int a); const char *get_attr(const char *p, const char *n, char *buf, int bufsize); Fl_Color get_color(const char *n, Fl_Color c); Fl_Shared_Image *get_image(const char *name, int W, int H); int get_length(const char *l); int handle(int); void hv_draw(const char *t, int x, int y); char begin_selection(); char extend_selection(); void end_selection(int c=0); void clear_global_selection(); Fl_Help_Link *find_link(int, int); void follow_link(Fl_Help_Link*); public: Fl_Help_View(int xx, int yy, int ww, int hh, const char *l = 0); ~Fl_Help_View(); /** Returns the current directory for the text in the buffer. */ const char *directory() const { if (directory_[0]) return (directory_); else return ((const char *)0); } /** Returns the current filename for the text in the buffer. */ const char *filename() const { if (filename_[0]) return (filename_); else return ((const char *)0); } int find(const char *s, int p = 0); /** This method assigns a callback function to use when a link is followed or a file is loaded (via Fl_Help_View::load()) that requires a different file or path. The callback function receives a pointer to the Fl_Help_View widget and the URI or full pathname for the file in question. It must return a pathname that can be opened as a local file or NULL: \code const char *fn(Fl_Widget *w, const char *uri); \endcode The link function can be used to retrieve remote or virtual documents, returning a temporary file that contains the actual data. If the link function returns NULL, the value of the Fl_Help_View widget will remain unchanged. If the link callback cannot handle the URI scheme, it should return the uri value unchanged or set the value() of the widget before returning NULL. */ void link(Fl_Help_Func *fn) { link_ = fn; } int load(const char *f); void resize(int,int,int,int); /** Gets the size of the help view. */ int size() const { return (size_); } void size(int W, int H) { Fl_Widget::size(W, H); } /** Sets the default text color. */ void textcolor(Fl_Color c) { if (textcolor_ == defcolor_) textcolor_ = c; defcolor_ = c; } /** Returns the current default text color. */ Fl_Color textcolor() const { return (defcolor_); } /** Sets the default text font. */ void textfont(Fl_Font f) { textfont_ = f; format(); } /** Returns the current default text font. */ Fl_Font textfont() const { return (textfont_); } /** Sets the default text size. */ void textsize(Fl_Fontsize s) { textsize_ = s; format(); } /** Gets the default text size. */ Fl_Fontsize textsize() const { return (textsize_); } /** Returns the current document title, or NULL if there is no title. */ const char *title() { return (title_); } void topline(const char *n); void topline(int); /** Returns the current top line in pixels. */ int topline() const { return (topline_); } void leftline(int); /** Gets the left position in pixels. */ int leftline() const { return (leftline_); } void value(const char *val); /** Returns the current buffer contents. */ const char *value() const { return (value_); } void clear_selection(); void select_all(); /** Gets the current size of the scrollbars' troughs, in pixels. If this value is zero (default), this widget will use the Fl::scrollbar_size() value as the scrollbar's width. \returns Scrollbar size in pixels, or 0 if the global Fl::scrollbar_size() is being used. \see Fl::scrollbar_size(int) */ int scrollbar_size() const { return(scrollbar_size_); } /** Sets the pixel size of the scrollbars' troughs to the \p size, in pixels. Normally you should not need this method, and should use Fl::scrollbar_size(int) instead to manage the size of ALL your widgets' scrollbars. This ensures your application has a consistent UI, is the default behavior, and is normally what you want. Only use THIS method if you really need to override the global scrollbar size. The need for this should be rare. Setting \p size to the special value of 0 causes the widget to track the global Fl::scrollbar_size(), which is the default. \param[in] size Sets the scrollbar size in pixels.\n If 0 (default), scrollbar size tracks the global Fl::scrollbar_size() \see Fl::scrollbar_size() */ void scrollbar_size(int size) { scrollbar_size_ = size; } }; #endif // !Fl_Help_View_H // // End of "$Id: Fl_Help_View.H 6743 2009-04-07 17:33:22Z AlbrechtS$". // 

Added fltk-1.3/FL/Fl_Hold_Browser.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61  // // "$Id: Fl_Hold_Browser.H 6614 2009-01-01 16:11:32Z matt$" // // Hold browser header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Hold_Browser widget . */ #ifndef Fl_Hold_Browser_H #define Fl_Hold_Browser_H #include "Fl_Browser.H" /** The Fl_Hold_Browser is a subclass of Fl_Browser which lets the user select a single item, or no items by clicking on the empty space. As long as the mouse button is held down the item pointed to by it is highlighted, and this highlighting remains on when the mouse button is released. Normally the callback is done when the user releases the mouse, but you can change this with when().

See Fl_Browser for methods to add and remove lines from the browser. */ class Fl_Hold_Browser : public Fl_Browser { public: /** Creates a new Fl_Hold_Browser widget using the given position, size, and label string. The default boxtype is FL_DOWN_BOX. The constructor specializes Fl_Browser() by setting the type to FL_HOLD_BROWSER. The destructor destroys the widget and frees all memory that has been allocated. */ Fl_Hold_Browser(int X,int Y,int W,int H,const char *l=0) : Fl_Browser(X,Y,W,H,l) {type(FL_HOLD_BROWSER);} }; #endif // // End of "$Id: Fl_Hold_Browser.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Hor_Fill_Slider.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  // // "$Id: Fl_Hor_Fill_Slider.H 6614 2009-01-01 16:11:32Z matt$" // // Horizontal fill slider header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Hor_Fill_Slider widget . */ #ifndef Fl_Hor_Fill_Slider_H #define Fl_Hor_Fill_Slider_H #include "Fl_Slider.H" class Fl_Hor_Fill_Slider : public Fl_Slider { public: Fl_Hor_Fill_Slider(int x,int y,int w,int h,const char *l=0) : Fl_Slider(x,y,w,h,l) {type(FL_HOR_FILL_SLIDER);} }; #endif // // End of "$Id: Fl_Hor_Fill_Slider.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Hor_Nice_Slider.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  // // "$Id: Fl_Hor_Nice_Slider.H 6614 2009-01-01 16:11:32Z matt$" // // Horizontal "nice" slider header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Hor_Nice_Slider widget . */ #ifndef Fl_Hor_Nice_Slider_H #define Fl_Hor_Nice_Slider_H #include "Fl_Slider.H" class Fl_Hor_Nice_Slider : public Fl_Slider { public: Fl_Hor_Nice_Slider(int x,int y,int w,int h,const char *l=0) : Fl_Slider(x,y,w,h,l) {type(FL_HOR_NICE_SLIDER); box(FL_FLAT_BOX);} }; #endif // // End of "$Id: Fl_Hor_Nice_Slider.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Hor_Slider.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  // // "$Id: Fl_Hor_Slider.H 6614 2009-01-01 16:11:32Z matt$" // // Horizontal slider header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Hor_Slider widget . */ #ifndef Fl_Hor_Slider_H #define Fl_Hor_Slider_H #include "Fl_Slider.H" class Fl_Hor_Slider : public Fl_Slider { public: Fl_Hor_Slider(int X,int Y,int W,int H,const char *l=0) : Fl_Slider(X,Y,W,H,l) {type(FL_HOR_SLIDER);} }; #endif // // End of "$Id: Fl_Hor_Slider.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Hor_Value_Slider.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  // // "$Id: Fl_Hor_Value_Slider.H 6614 2009-01-01 16:11:32Z matt$" // // Horizontal value slider header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Hor_Value_Slider widget . */ #ifndef Fl_Hor_Value_Slider_H #define Fl_Hor_Value_Slider_H #include "Fl_Value_Slider.H" class Fl_Hor_Value_Slider : public Fl_Value_Slider { public: Fl_Hor_Value_Slider(int X,int Y,int W,int H,const char *l=0) : Fl_Value_Slider(X,Y,W,H,l) {type(FL_HOR_SLIDER);} }; #endif // // End of "$Id: Fl_Hor_Value_Slider.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Image.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222  // // "$Id: Fl_Image.H 6614 2009-01-01 16:11:32Z matt$" // // Image header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Image, Fl_RGB_Image classes . */ #ifndef Fl_Image_H # define Fl_Image_H # include "Enumerations.H" class Fl_Widget; struct Fl_Menu_Item; struct Fl_Label; /** Fl_Image is the base class used for caching and drawing all kinds of images in FLTK. This class keeps track of common image data such as the pixels, colormap, width, height, and depth. Virtual methods are used to provide type-specific image handling.

Since the Fl_Image class does not support image drawing by itself, calling the draw() method results in a box with an X in it being drawn instead. */ class FL_EXPORT Fl_Image { int w_, h_, d_, ld_, count_; const char * const *data_; // Forbid use of copy contructor and assign operator Fl_Image & operator=(const Fl_Image &); Fl_Image(const Fl_Image &); protected: /** The first form of the w() method returns the current image width in pixels.

The second form is a protected method that sets the current image width. */ void w(int W) {w_ = W;} /** The first form of the h() method returns the current image height in pixels.

The second form is a protected method that sets the current image height. */ void h(int H) {h_ = H;} /** The first form of the d() method returns the current image depth. The return value will be 0 for bitmaps, 1 for pixmaps, and 1 to 4 for color images.

The second form is a protected method that sets the current image depth. */ void d(int D) {d_ = D;} /** See int ld() */ void ld(int LD) {ld_ = LD;} /** See const char * const *data() */ void data(const char * const *p, int c) {data_ = p; count_ = c;} void draw_empty(int X, int Y); static void labeltype(const Fl_Label *lo, int lx, int ly, int lw, int lh, Fl_Align la); static void measure(const Fl_Label *lo, int &lw, int &lh); public: /** See void Fl_Image::w(int) */ int w() const {return w_;} /** See void Fl_Image::h(int) */ int h() const {return h_;} /** The first form of the d() method returns the current image depth. The return value will be 0 for bitmaps, 1 for pixmaps, and 1 to 4 for color images.

The second form is a protected method that sets the current image depth. */ int d() const {return d_;} /** The first form of the ld() method returns the current line data size in bytes. Line data is extra data that is included after each line of color image data and is normally not present.

The second form is a protected method that sets the current line data size in bytes. */ int ld() const {return ld_;} /** The count() method returns the number of data values associated with the image. The value will be 0 for images with no associated data, 1 for bitmap and color images, and greater than 2 for pixmap images. */ int count() const {return count_;} /** The first form of the data() method returns a pointer to the current image data array. Use the count() method to find the size of the data array.

The second form is a protected method that sets the current array pointer and count of pointers in the array. */ const char * const *data() const {return data_;} /** The constructor creates an empty image with the specified width, height, and depth. The width and height are in pixels. The depth is 0 for bitmaps, 1 for pixmap (colormap) images, and 1 to 4 for color images. */ Fl_Image(int W, int H, int D) {w_ = W; h_ = H; d_ = D; ld_ = 0; count_ = 0; data_ = 0;} virtual ~Fl_Image(); virtual Fl_Image *copy(int W, int H); /** The copy() method creates a copy of the specified image. If the width and height are provided, the image is resized to the specified size. The image should be deleted (or in the case of Fl_Shared_Image, released) when you are done with it. */ Fl_Image *copy() { return copy(w(), h()); } virtual void color_average(Fl_Color c, float i); /** The inactive() method calls color_average(FL_BACKGROUND_COLOR, 0.33f) to produce an image that appears grayed out. This method does not alter the original image data. */ void inactive() { color_average(FL_GRAY, .33f); } virtual void desaturate(); virtual void label(Fl_Widget*w); virtual void label(Fl_Menu_Item*m); /** The draw() methods draw the image. This form specifies a bounding box for the image, with the origin (upper-lefthand corner) of the image offset by the cx and cy arguments. */ virtual void draw(int X, int Y, int W, int H, int cx=0, int cy=0); // platform dependent /** The draw() methods draw the image. This form specifies the upper-lefthand corner of the image */ void draw(int X, int Y) {draw(X, Y, w(), h(), 0, 0);} // platform dependent virtual void uncache(); }; /** The Fl_RGB_Image class supports caching and drawing of full-color images with 1 to 4 channels of color information. Images with an even number of channels are assumed to contain alpha information, which is used to blend the image with the contents of the screen.

Fl_RGB_Image is defined in <FL/Fl_Image.H>, however for compatibility reasons <FL/Fl_RGB_Image.H> should be included. */ class FL_EXPORT Fl_RGB_Image : public Fl_Image { public: const uchar *array; int alloc_array; // Non-zero if array was allocated #if defined(__APPLE__) || defined(WIN32) void *id; // for internal use void *mask; // for internal use (mask bitmap) #else unsigned id; // for internal use unsigned mask; // for internal use (mask bitmap) #endif // __APPLE__ || WIN32 /** The constructor creates a new image from the specified data. */ Fl_RGB_Image(const uchar *bits, int W, int H, int D=3, int LD=0) : Fl_Image(W,H,D), array(bits), alloc_array(0), id(0), mask(0) {data((const char **)&array, 1); ld(LD);} virtual ~Fl_RGB_Image(); virtual Fl_Image *copy(int W, int H); Fl_Image *copy() { return copy(w(), h()); } virtual void color_average(Fl_Color c, float i); virtual void desaturate(); virtual void draw(int X, int Y, int W, int H, int cx=0, int cy=0); void draw(int X, int Y) {draw(X, Y, w(), h(), 0, 0);} virtual void label(Fl_Widget*w); virtual void label(Fl_Menu_Item*m); virtual void uncache(); }; #endif // !Fl_Image_H // // End of "$Id: Fl_Image.H 6614 2009-01-01 16:11:32Z matt$". // 

Added fltk-1.3/FL/Fl_Input.H.

     > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262  // // "$Id: Fl_Input.H 6699 2009-03-18 22:58:12Z engelsman$" // // Input header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Input widget . */ #ifndef Fl_Input_H #define Fl_Input_H #include "Fl_Input_.H" /** This is the FLTK text input widget. It displays a single line of text and lets the user edit it. Normally it is drawn with an inset box and a white background. The text may contain any characters (even 0), and will correctly display anything, using ^X notation for unprintable control characters and \\nnn notation for unprintable characters with the high bit set. It assumes the font can draw any characters in the ISO-8859-1 character set.

Mouse button 1Moves the cursor to this point. Drag selects characters. Double click selects words. Triple click selects all text. Shift+click extends the selection. When you select text it is automatically copied to the clipboard.
Mouse button 2Insert the clipboard at the point clicked. You can also select a region and replace it with the clipboard by selecting the region with mouse button 2.
Mouse button 3Currently acts like button 1.
BackspaceDeletes one character to the left, or deletes the selected region.
EnterMay cause the callback, see when().
^A or HomeGo to start of line.
^B or LeftMove left
^CCopy the selection to the clipboard
^D or DeleteDeletes one character to the right or deletes the selected region.
^E or EndGo to the end of line.
^F or RightMove right
^KDelete to the end of line (next \\n character) or deletes a single \\n character. These deletions are all concatenated into the clipboard.
^N or DownMove down (for Fl_Multiline_Input only, otherwise it moves to the next input field).
^P or UpMove up (for Fl_Multiline_Input only, otherwise it moves to the previous input field).
^UDelete everything.
^V or ^YPaste the clipboard
^X or ^WCopy the region to the clipboard and delete it.
^Z or ^_Undo. This is a single-level undo mechanism, but all adjacent deletions and insertions are concatenated into a single "undo". Often this will undo a lot more than you expected.
Shift+moveMove the cursor but also extend the selection.
RightCtrl or
Compose
\anchor Fl_Input_Compose_Character Start a compose-character sequence. The next one or two keys typed define the character to insert (see table that follows.)

For instance, to type "á" type [compose][a]['] or [compose]['][a].

The character "nbsp" (non-breaking space) is typed by using [compose][space].

The single-character sequences may be followed by a space if necessary to remove ambiguity. For instance, if you really want to type "ª~" rather than "ã" you must type [compose][a][space][~].

The same key may be used to "quote" control characters into the text. If you need a ^Q character you can get one by typing [compose][Control+Q].

X may have a key on the keyboard defined as XK_Multi_key. If so this key may be used as well as the right-hand control key. You can set this up with the program xmodmap.

If your keyboard is set to support a foreign language you should also be able to type "dead key" prefix characters. On X you will actually be able to see what dead key you typed, and if you then move the cursor without completing the sequence the accent will remain inserted.

Character Composition Table
KeysChar KeysChar KeysChar KeysChar KeysChar KeysChar
spnbsp *°  AÀ D -Ð  aà d -ð
!¡ + -± ' AÁ ~ NÑ ' aá ~ nñ
%¢ 2² A ^Â  OÒ ^ aâ  oò
#£ 3³ ~ AÃ ' OÓ ~ aã ' oó
$¤ '´ : AÄ ^ OÔ : aä ^ oô y =¥ uµ * AÅ ~ OÕ * aå ~ oõ |¦ p A EÆ : OÖ a eæ : oö &§ .· , CÇ x× , cç - :÷ :¨ ,¸ E È O /Ø  eè o /ø c© 1¹ ' EÉ  UÙ ' eé  uù aª oº ^ EÊ ' UÚ ^ eê ' uú < <« > >» : EË ^ UÛ : eë ^ uû ~¬ 1 4¼  IÌ : UÜ  iì : uü -­ 1 2½ ' IÍ ' YÝ ' ií ' yý r® 3 4¾ ^ IÎ T HÞ ^ iî t hþ _¯ ?¿ : IÏ s sß : iï : yÿ */ class FL_EXPORT Fl_Input : public Fl_Input_ { int handle_key(); int shift_position(int p); int shift_up_down_position(int p); void handle_mouse(int keepmark=0); protected: void draw(); public: int handle(int); Fl_Input(int,int,int,int,const char * = 0); }; #endif // // End of "$Id: Fl_Input.H 6699 2009-03-18 22:58:12Z engelsman $". //  Added fltk-1.3/FL/Fl_Input_.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455  // // "$Id: Fl_Input_.H 6902 2009-09-27 11:06:56Z matt $" // // Input base class header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Input_ widget . */ #ifndef Fl_Input__H #define Fl_Input__H #ifndef Fl_Widget_H #include "Fl_Widget.H" #endif #define FL_NORMAL_INPUT 0 #define FL_FLOAT_INPUT 1 #define FL_INT_INPUT 2 #define FL_HIDDEN_INPUT 3 #define FL_MULTILINE_INPUT 4 #define FL_SECRET_INPUT 5 #define FL_INPUT_TYPE 7 #define FL_INPUT_READONLY 8 #define FL_NORMAL_OUTPUT (FL_NORMAL_INPUT | FL_INPUT_READONLY) #define FL_MULTILINE_OUTPUT (FL_MULTILINE_INPUT | FL_INPUT_READONLY) #define FL_INPUT_WRAP 16 #define FL_MULTILINE_INPUT_WRAP (FL_MULTILINE_INPUT | FL_INPUT_WRAP) #define FL_MULTILINE_OUTPUT_WRAP (FL_MULTILINE_INPUT | FL_INPUT_READONLY | FL_INPUT_WRAP) /** This class provides a low-overhead text input field. This is a virtual base class below Fl_Input. It has all the same interfaces, but lacks the handle() and draw() method. You may want to subclass it if you are one of those people who likes to change how the editing keys work. It may also be useful for adding scrollbars to the input field. This can act like any of the subclasses of Fl_Input, by setting type() to one of the following values: \code #define FL_NORMAL_INPUT 0 #define FL_FLOAT_INPUT 1 #define FL_INT_INPUT 2 #define FL_MULTILINE_INPUT 4 #define FL_SECRET_INPUT 5 #define FL_INPUT_TYPE 7 #define FL_INPUT_READONLY 8 #define FL_NORMAL_OUTPUT (FL_NORMAL_INPUT | FL_INPUT_READONLY) #define FL_MULTILINE_OUTPUT (FL_MULTILINE_INPUT | FL_INPUT_READONLY) #define FL_INPUT_WRAP 16 #define FL_MULTILINE_INPUT_WRAP (FL_MULTILINE_INPUT | FL_INPUT_WRAP) #define FL_MULTILINE_OUTPUT_WRAP (FL_MULTILINE_INPUT | FL_INPUT_READONLY | FL_INPUT_WRAP) \endcode All variables that represent an index into a text buffer are byte-oriented, not character oriented. Since utf8 characters can be up to six bytes long, simply incrementing such an index will not reliably advance to the next character in the text buffer. Indices and pointers into the text buffer should always point at a 7 bit ASCII character or the beginning of a utf8 character sequence. Behavior for false utf8 sequences and pointers into the middle of a seqeunce are undefined. \see Fl_Text_Display, Fl_Text_Editor for more powerful text handling widgets \internal When porting this widget from ASCII to UTF8, previously legal pointers into the text of this widget can become illegal by pointing into the middle of a UTF8 seuence. This is not a big problem for Fl_Input_ because all code in this module is quite tolerant. It could be problematic though when deriving from this class because no feedback for illegal pointers is given. Additionaly, a careless "copy" call can put partial UTF8 sequnces into the clipboard. None of these issues should be desasterous. Nevertheless, we should discuss how FLTK should handle false UTF8 suequences and pointers. */ class FL_EXPORT Fl_Input_ : public Fl_Widget { /** \internal Storage for the text field. */ const char* value_; /** \internal Buffer memory for expanded text. \see expand() */ char* buffer; /** \internal Size of text in bytes in the \p value_ field. */ int size_; /** \internal \todo Please document me! */ int bufsize; /** \internal Positin of the cursor in the document */ int position_; /** \internal Position of the other end of the selected text. If \p position_ equals \p mark_, no text is selected */ int mark_; /** \internal Offset to text origin within widget bounds */ int xscroll_, yscroll_; /** \internal Minimal update pointer. Display requirs redraw from here to the end of the buffer. */ int mu_p; /** \internal Maximum size of buffer. \todo Is this really needed? */ int maximum_size_; /** \internal Shortcut key that will fetch focus for this widget. */ int shortcut_; /** \internal This is set if no text but only the cursor needs updating. */ uchar erase_cursor_only; /** \internal The font used for the entire text. */ Fl_Font textfont_; /** \internal Height of the font used for the entire text. */ Fl_Fontsize textsize_; /** \internal color of the entire text */ Fl_Color textcolor_; /** \internal color of the text cursor */ Fl_Color cursor_color_; /** \internal Horizontal cursor position in pixels while movin up or down. */ static double up_down_pos; /** \internal Flag to remeber last cursor move. */ static int was_up_down; /* Convert a given text segment into the text that will be rendered on screen. */ const char* expand(const char*, char*) const; /* Calculates the width in pixels of part of a text buffer. */ double expandpos(const char*, const char*, const char*, int*) const; /* Mark a range of characters for update. */ void minimal_update(int, int); /* Mark a range of characters for update. */ void minimal_update(int p); /* Copy the value from a possibly static entry into the internal buffer. */ void put_in_buffer(int newsize); /* Set the current font and font size. */ void setfont() const; protected: /* Find the start of a word. */ int word_start(int i) const; /* Find the end of a word. */ int word_end(int i) const; /* Find the start of a line. */ int line_start(int i) const; /* Find the end of a line. */ int line_end(int i) const; /* Draw the text in the passed bounding box. */ void drawtext(int, int, int, int); /* Move the cursor to the column given by up_down_pos. */ int up_down_position(int, int keepmark=0); /* Handle mouse clicks and mose moves. */ void handle_mouse(int, int, int, int, int keepmark=0); /* Handle all kinds of text field related events. */ int handletext(int e, int, int, int, int); /* Check the when() field and do a callback if indicated. */ void maybe_do_callback(); /** \internal Horizontal offset of text to left edge of widget. */ int xscroll() const {return xscroll_;} /** \internal Vertical offset of text to top edge of widget. */ int yscroll() const {return yscroll_;} void yscroll(int y) { yscroll_ = y; damage(FL_DAMAGE_EXPOSE);} /* Return the number of lines displayed on a single page. */ int linesPerPage(); public: /* Change the size of the widget. */ void resize(int, int, int, int); /* Constructor */ Fl_Input_(int, int, int, int, const char* = 0); /* Destructor */ ~Fl_Input_(); /* Changes the widget text. */ int value(const char*); /* Changes the widget text. */ int value(const char*, int); /* Changes the widget text. */ int static_value(const char*); /* Changes the widget text. */ int static_value(const char*, int); /** Returns the text displayed in the widget. This function returns the current value, which is a pointer to the internal buffer and is valid only until the next event is handled. \return pointer to an internal buffer - do not free() this \see Fl_Input_::value(const char*) */ const char* value() const {return value_;} /* Returns the character at index \p i. */ Fl_Char index(int i) const; /** Returns the number of bytes in value(). This may be greater than strlen(value()) if there are \c nul characters in the text. \return number of bytes in the text */ int size() const {return size_;} /** Sets the width and height of this widget. \param [in] W, H new width and height \see Fl_Widget::size(int, int) */ void size(int W, int H) { Fl_Widget::size(W, H); } /** Gets the maximum length of the input field. \todo It is not clear if this function is actually required */ int maximum_size() const {return maximum_size_;} /** Sets the maximum length of the input field. \todo It is not clear if this function is actually required */ void maximum_size(int m) {maximum_size_ = m;} /** Gets the position of the text cursor. \return the cursor position as an index \see position(int, int) */ int position() const {return position_;} /** Gets the current selection mark. \return index into the text */ int mark() const {return mark_;} /* Sets the index for the cursor and mark. */ int position(int p, int m); /** Set the cursor position and mark. position(n) is the same as position(n, n). \param p new index for cursor and mark \return 0 if no positions changed \see position(int, int), position(), mark(int) */ int position(int p) {return position(p, p);} /** Sets the current selection mark. mark(n) is the same as position(position(),n). \param m new index of the mark \return 0 if the mark did not change \see position(), position(int, int) */ int mark(int m) {return position(position(), m);} /* Deletes text from b to e and inserts the new string text. */ int replace(int, int, const char*, int=0); /** Deletes the current selection. This function deletes the currently selected text \e without storing it in the clipboard. To use the clipboard, you may call copy() first or copy_cuts() after this call. \return 0 if no data was copied */ int cut() {return replace(position(), mark(), 0);} /** Deletes the next \p n bytes rounded to characters before or after the cursor. This function deletes the currently selected text \e without storing it in the clipboard. To use the clipboard, you may call copy() first or copy_cuts() after this call. \param n number of bytes rounded to full characters and clamped to the buffer. A negative number will cut characters to the left of the cursor. \return 0 if no data was copied */ int cut(int n) {return replace(position(), position()+n, 0);} /** Deletes all characters between index \p a and \p b. This function deletes the currently selected text \e without storing it in the clipboard. To use the clipboard, you may call copy() first or copy_cuts() after this call. \param a, b range of bytes rounded to full characters and clamped to the buffer \return 0 if no data was copied */ int cut(int a, int b) {return replace(a, b, 0);} /** Inserts text at the cursor position. This function inserts the string in \p t at the cursor position() and moves the new position and mark to the end of the inserted text. \param [in] t text that will be inserted \param [in] l length of text, or 0 if the string is terminated by \c nul. \return 0 if no text was inserted */ int insert(const char* t, int l=0){return replace(position_, mark_, t, l);} /* Put the current selection into the clipboard. */ int copy(int clipboard); /* Undo previous changes to the text buffer. */ int undo(); /* Copy the yank buffer to the clipboard. */ int copy_cuts(); /** Return the shortcut key associtaed with this widget. \return shortcut keystroke \see Fl_Button::shortcut() */ int shortcut() const {return shortcut_;} /** Sets the shortcut key associtaed with this widget. Pressing the shortcut key gives text editing focus to this widget. \param [in] s new shortcut keystroke \see Fl_Button::shortcut() */ void shortcut(int s) {shortcut_ = s;} /** Gets the font of the text in the input field. \return the current Fl_Font index */ Fl_Font textfont() const {return textfont_;} /** Sets the font of the text in the input field. The text font defaults to \c FL_HELVETICA. \param [in] s the new text font */ void textfont(Fl_Font s) {textfont_ = s;} /** Gets the size of the text in the input field. \return the text height in pixels */ Fl_Fontsize textsize() const {return textsize_;} /** Sets the size of the text in the input field. The text height defaults to \c FL_NORMAL_SIZE. \param [in] s the new font height in pixel units */ void textsize(Fl_Fontsize s) {textsize_ = s;} /** Gets the color of the text in the input field. \return the text color \see textcolor(Fl_Color) */ Fl_Color textcolor() const {return textcolor_;} /** Sets the color of the text in the input field. The text color defaults to \c FL_FOREGROUND_COLOR. \param [in] n new text color \see textcolor() */ void textcolor(Fl_Color n) {textcolor_ = n;} /** Gets the color of the cursor. \return the current cursor color */ Fl_Color cursor_color() const {return cursor_color_;} /** Sets the color of the cursor. The default color for the cursor is \c FL_BLACK. \param [in] n the new cursor color */ void cursor_color(Fl_Color n) {cursor_color_ = n;} /** Gets the input field type. \return the current input type */ int input_type() const {return type() & FL_INPUT_TYPE; } /** Sets the input field type. A redraw() is required to reformat the input field. \param [in] t new input type */ void input_type(int t) { type((uchar)(t | readonly())); } /** Gets the read-only state of the input field. \return non-zero if this widget is read-only */ int readonly() const { return type() & FL_INPUT_READONLY; } /** Sets the read-only state of the input field. \param [in] b if \p b is 0, the text in this widget can be edited by the user */ void readonly(int b) { if (b) type((uchar)(type() | FL_INPUT_READONLY)); else type((uchar)(type() & ~FL_INPUT_READONLY)); } /** Gets the word wrapping state of the input field. Word wrap is only functional with multi-line input fields. */ int wrap() const { return type() & FL_INPUT_WRAP; } /** Sets the word wrapping state of the input field. Word wrap is only functional with multi-line input fields. */ void wrap(int b) { if (b) type((uchar)(type() | FL_INPUT_WRAP)); else type((uchar)(type() & ~FL_INPUT_WRAP)); } }; #endif // // End of "$Id: Fl_Input_.H 6902 2009-09-27 11:06:56Z matt $". //  Added fltk-1.3/FL/Fl_Input_Choice.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216  // // "$Id: Fl_Input_Choice.H 6614 2009-01-01 16:11:32Z matt " // // An input/chooser widget. // ______________ ____ // | || __ | // | input area || \/ | // |______________||____| // // Copyright 1998-2009 by Bill Spitzak and others. // Copyright 2004 by Greg Ercolano. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Input_Choice widget . */ #ifndef Fl_Input_Choice_H #define Fl_Input_Choice_H #include #include #include #include #include #include /** A combination of the input widget and a menu button. The user can either type into the input area, or use the menu button chooser on the right, which loads the input area with predefined text. Normally it is drawn with an inset box and a white background. The application can directly access both the input and menu widgets directly, using the menubutton() and input() accessor methods. */ class Fl_Input_Choice : public Fl_Group { // Private class to handle slightly 'special' behavior of menu button class InputMenuButton : public Fl_Menu_Button { void draw() { draw_box(FL_UP_BOX, color()); fl_color(active_r() ? labelcolor() : fl_inactive(labelcolor())); int xc = x()+w()/2, yc=y()+h()/2; fl_polygon(xc-5,yc-3,xc+5,yc-3,xc,yc+3); if (Fl::focus() == this) draw_focus(); } public: InputMenuButton(int x,int y,int w,int h,const char*l=0) : Fl_Menu_Button(x,y,w,h,l) { box(FL_UP_BOX); } }; Fl_Input *inp_; InputMenuButton *menu_; static void menu_cb(Fl_Widget*, void *data) { Fl_Input_Choice *o=(Fl_Input_Choice *)data; const Fl_Menu_Item *item = o->menubutton()->mvalue(); if (item && item->flags & (FL_SUBMENU|FL_SUBMENU_POINTER)) return; // ignore submenus if (!strcmp(o->inp_->value(), o->menu_->text())) { o->Fl_Widget::clear_changed(); if (o->when() & FL_WHEN_NOT_CHANGED) o->do_callback(); } else { o->inp_->value(o->menu_->text()); o->inp_->set_changed(); o->Fl_Widget::set_changed(); if (o->when() & (FL_WHEN_CHANGED|FL_WHEN_RELEASE)) o->do_callback(); } if (o->callback() != default_callback) { o->Fl_Widget::clear_changed(); o->inp_->clear_changed(); } } static void inp_cb(Fl_Widget*, void *data) { Fl_Input_Choice *o=(Fl_Input_Choice *)data; if (o->inp_->changed()) { o->Fl_Widget::set_changed(); if (o->when() & (FL_WHEN_CHANGED|FL_WHEN_RELEASE)) o->do_callback(); } else { o->Fl_Widget::clear_changed(); if (o->when() & FL_WHEN_NOT_CHANGED) o->do_callback(); } if (o->callback() != default_callback) o->Fl_Widget::clear_changed(); } // Custom resize behavior -- input stretches, menu button doesn't inline int inp_x() { return(x() + Fl::box_dx(box())); } inline int inp_y() { return(y() + Fl::box_dy(box())); } inline int inp_w() { return(w() - Fl::box_dw(box()) - 20); } inline int inp_h() { return(h() - Fl::box_dh(box())); } inline int menu_x() { return(x() + w() - 20 - Fl::box_dx(box())); } inline int menu_y() { return(y() + Fl::box_dy(box())); } inline int menu_w() { return(20); } inline int menu_h() { return(h() - Fl::box_dh(box())); } public: /** Creates a new Fl_Input_Choice widget using the given position, size, and label string. Inherited destructor Destroys the widget and any value associated with it. */ Fl_Input_Choice (int x,int y,int w,int h,const char*l=0) : Fl_Group(x,y,w,h,l) { Fl_Group::box(FL_DOWN_BOX); align(FL_ALIGN_LEFT); // default like Fl_Input inp_ = new Fl_Input(inp_x(), inp_y(), inp_w(), inp_h()); inp_->callback(inp_cb, (void*)this); inp_->box(FL_FLAT_BOX); // cosmetic inp_->when(FL_WHEN_CHANGED|FL_WHEN_NOT_CHANGED); menu_ = new InputMenuButton(menu_x(), menu_y(), menu_w(), menu_h()); menu_->callback(menu_cb, (void*)this); menu_->box(FL_FLAT_BOX); // cosmetic end(); } /** Adds an item to the menu.*/ void add(const char *s) { menu_->add(s); } int changed() const { return inp_->changed() | Fl_Widget::changed();} void clear_changed() { inp_->clear_changed(); Fl_Widget::clear_changed(); } void set_changed() { inp_->set_changed(); // no need to call Fl_Widget::set_changed() } /** Removes all items from the menu. */ void clear() { menu_->clear(); } /** Gets the box type of the menu button */ Fl_Boxtype down_box() const { return (menu_->down_box()); } /** Sets the box type of the menu button */ void down_box(Fl_Boxtype b) { menu_->down_box(b); } /** Gets the Fl_Menu_Item array used for the menu. */ const Fl_Menu_Item *menu() { return (menu_->menu()); } /** Sets the Fl_Menu_Item array used for the menu. */ void menu(const Fl_Menu_Item *m) { menu_->menu(m); } void resize(int X, int Y, int W, int H) { Fl_Group::resize(X,Y,W,H); inp_->resize(inp_x(), inp_y(), inp_w(), inp_h()); menu_->resize(menu_x(), menu_y(), menu_w(), menu_h()); } /** Gets the encapsulated input text color attributes */ Fl_Color textcolor() const { return (inp_->textcolor());} /** Sets the encapsulated input text color attributes */ void textcolor(Fl_Color c) { inp_->textcolor(c);} /** Gets the encapsulated input text font attributes */ Fl_Font textfont() const { return (inp_->textfont());} /** Sets the encapsulated input text font attributes */ void textfont(Fl_Font f) { inp_->textfont(f);} /** Gets the encapsulated input size attributes */ Fl_Fontsize textsize() const { return (inp_->textsize()); } /** Sets the encapsulated input size attributes */ void textsize(Fl_Fontsize s) { inp_->textsize(s); } /** See void Fl_Input_Choice::value(const char *s) */ const char* value() const { return (inp_->value()); } /** Sets or returns the input widget's current contents. The second form sets the contents using the index into the menu which you can set as an integer. Setting the value effectively 'chooses' this menu item, and sets it as the new input text, deleting the previous text. */ void value(const char *val) { inp_->value(val); } /** See void Fl_Input_Choice::value(const char *s) */ void value(int val) { menu_->value(val); inp_->value(menu_->text(val)); } /** Returns a reference to the internal Fl_Menu_Button widget. */ Fl_Menu_Button *menubutton() { return menu_; } /** Returns a reference to the internal Fl_Input widget. */ Fl_Input *input() { return inp_; } }; #endif // !Fl_Input_Choice_H // // End of "Id: Fl_Input_Choice.H 6614 2009-01-01 16:11:32Z matt $". //  Added fltk-1.3/FL/Fl_Int_Input.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55  // // "$Id: Fl_Int_Input.H 6614 2009-01-01 16:11:32Z matt $" // // Integer input header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Int_Input widget . */ #ifndef Fl_Int_Input_H #define Fl_Int_Input_H #include "Fl_Input.H" /** The Fl_Int_Input class is a subclass of Fl_Input that only allows the user to type decimal digits (or hex numbers of the form 0xaef). */ class Fl_Int_Input : public Fl_Input { public: /** Creates a new Fl_Int_Input widget using the given position, size, and label string. The default boxtype is FL_DOWN_BOX. Inherited destructor Destroys the widget and any value associated with it. */ Fl_Int_Input(int X,int Y,int W,int H,const char *l = 0) : Fl_Input(X,Y,W,H,l) {type(FL_INT_INPUT);} }; #endif // // End of "$Id: Fl_Int_Input.H 6614 2009-01-01 16:11:32Z matt $". //  Added fltk-1.3/FL/Fl_JPEG_Image.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52  // // "$Id: Fl_JPEG_Image.H 6614 2009-01-01 16:11:32Z matt $" // // JPEG image header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_JPEG_Image class . */ #ifndef Fl_JPEG_Image_H #define Fl_JPEG_Image_H # include "Fl_Image.H" /** The Fl_JPEG_Image class supports loading, caching, and drawing of Joint Photographic Experts Group (JPEG) File Interchange Format (JFIF) images. The class supports grayscale and color (RGB) JPEG image files. */ class FL_EXPORT Fl_JPEG_Image : public Fl_RGB_Image { public: Fl_JPEG_Image(const char* filename); }; #endif // // End of "$Id: Fl_JPEG_Image.H 6614 2009-01-01 16:11:32Z matt $". //  Added fltk-1.3/FL/Fl_Light_Button.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59  // // "$Id: Fl_Light_Button.H 6614 2009-01-01 16:11:32Z matt $" // // Lighted button header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Light_Button widget . */ #ifndef Fl_Light_Button_H #define Fl_Light_Button_H #include "Fl_Button.H" /** This subclass displays the "on" state by turning on a light, rather than drawing pushed in. The shape of the "light" is initially set to FL_DOWN_BOX. The color of the light when on is controlled with selection_color(), which defaults to FL_YELLOW. Buttons generate callbacks when they are clicked by the user. You control exactly when and how by changing the values for type() and when(). \image html Fl_Light_Button.gif \image latex Fl_Light_Button.eps "Fl_Light_Button" width=4cm */ class FL_EXPORT Fl_Light_Button : public Fl_Button { protected: virtual void draw(); public: virtual int handle(int); Fl_Light_Button(int x,int y,int w,int h,const char *l = 0); }; #endif // // End of "$Id: Fl_Light_Button.H 6614 2009-01-01 16:11:32Z matt $". //  Added fltk-1.3/FL/Fl_Line_Dial.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  // // "$Id: Fl_Line_Dial.H 6614 2009-01-01 16:11:32Z matt $" // // Line dial header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Line_Dial widget . */ #ifndef Fl_Line_Dial_H #define Fl_Line_Dial_H #include "Fl_Dial.H" class Fl_Line_Dial : public Fl_Dial { public: Fl_Line_Dial(int x,int y,int w,int h, const char *l = 0) : Fl_Dial(x,y,w,h,l) {type(FL_LINE_DIAL);} }; #endif // // End of "$Id: Fl_Line_Dial.H 6614 2009-01-01 16:11:32Z matt $". //  Added fltk-1.3/FL/Fl_Menu.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33  // // "$Id: Fl_Menu.H 6614 2009-01-01 16:11:32Z matt $" // // Old menu header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // // this include file is for back compatibility only #include "Fl_Menu_Item.H" // // End of "$Id: Fl_Menu.H 6614 2009-01-01 16:11:32Z matt $". //  Added fltk-1.3/FL/Fl_Menu_.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146  // // "$Id: Fl_Menu_.H 6902 2009-09-27 11:06:56Z matt $" // // Menu base class header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Menu_ widget . */ #ifndef Fl_Menu__H #define Fl_Menu__H #ifndef Fl_Widget_H #include "Fl_Widget.H" #endif #include "Fl_Menu_Item.H" /** Base class of all widgets that have a menu in FLTK. Currently FLTK provides you with Fl_Menu_Button, Fl_Menu_Bar, and Fl_Choice. The class contains a pointer to an array of structures of type Fl_Menu_Item. The array may either be supplied directly by the user program, or it may be "private": a dynamically allocated array managed by the Fl_Menu_. */ class FL_EXPORT Fl_Menu_ : public Fl_Widget { Fl_Menu_Item *menu_; const Fl_Menu_Item *value_; protected: uchar alloc; uchar down_box_; Fl_Font textfont_; Fl_Fontsize textsize_; Fl_Color textcolor_; public: Fl_Menu_(int,int,int,int,const char * =0); ~Fl_Menu_(); int item_pathname(char *name, int namelen, const Fl_Menu_Item *finditem=0) const; const Fl_Menu_Item* picked(const Fl_Menu_Item*); const Fl_Menu_Item* find_item(const char *name); const Fl_Menu_Item* test_shortcut() {return picked(menu()->test_shortcut());} void global(); /** Returns a pointer to the array of Fl_Menu_Items. This will either be the value passed to menu(value) or the private copy. */ const Fl_Menu_Item *menu() const {return menu_;} void menu(const Fl_Menu_Item *m); void copy(const Fl_Menu_Item *m, void* user_data = 0); int add(const char*, int shortcut, Fl_Callback*, void* = 0, int = 0); /** See int Fl_Menu_::add(const char* label, int shortcut, Fl_Callback*, void *user_data=0, int flags=0)*/ int add(const char* a, const char* b, Fl_Callback* c, void* d = 0, int e = 0) { return add(a,fl_old_shortcut(b),c,d,e);} int add(const char *); int size() const ; void size(int W, int H) { Fl_Widget::size(W, H); } void clear(); void replace(int,const char *); void remove(int); /** Changes the shortcut of item i to n. */ void shortcut(int i, int s) {menu_[i].shortcut(s);} /** Sets the flags of item i. For a list of the flags, see Fl_Menu_Item. */ void mode(int i,int fl) {menu_[i].flags = fl;} /** Gets the flags of item i. For a list of the flags, see Fl_Menu_Item. */ int mode(int i) const {return menu_[i].flags;} /** Returns a pointer to the last menu item that was picked. */ const Fl_Menu_Item *mvalue() const {return value_;} /** Returns the index into menu() of the last item chosen by the user. It is zero initially. */ int value() const {return value_ ? (int)(value_-menu_) : -1;} int value(const Fl_Menu_Item*); /** The value is the index into menu() of the last item chosen by the user. It is zero initially. You can set it as an integer, or set it with a pointer to a menu item. The set routines return non-zero if the new value is different than the old one. */ int value(int i) {return value(menu_+i);} /** Returns the title of the last item chosen, or of item i. */ const char *text() const {return value_ ? value_->text : 0;} /** Returns the title of the last item chosen, or of item i. */ const char *text(int i) const {return menu_[i].text;} /** Gets the current font of menu item labels. */ Fl_Font textfont() const {return textfont_;} /** Sets the current font of menu item labels. */ void textfont(Fl_Font c) {textfont_=c;} /** Gets the font size of menu item labels. */ Fl_Fontsize textsize() const {return textsize_;} /** Sets the font size of menu item labels. */ void textsize(Fl_Fontsize c) {textsize_=c;} /** Get the current color of menu item labels. */ Fl_Color textcolor() const {return textcolor_;} /** Sets the current color of menu item labels. */ void textcolor(Fl_Color c) {textcolor_=c;} /** This box type is used to surround the currently-selected items in the menus. If this is FL_NO_BOX then it acts like FL_THIN_UP_BOX and selection_color() acts like FL_WHITE, for back compatibility. */ Fl_Boxtype down_box() const {return (Fl_Boxtype)down_box_;} /** See Fl_Boxtype Fl_Menu_::down_box() const */ void down_box(Fl_Boxtype b) {down_box_ = b;} /** For back compatibility, same as selection_color() */ Fl_Color down_color() const {return selection_color();} /** For back compatibility, same as selection_color() */ void down_color(unsigned c) {selection_color(c);} }; #endif // // End of "$Id: Fl_Menu_.H 6902 2009-09-27 11:06:56Z matt $". //  Added fltk-1.3/FL/Fl_Menu_Bar.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89  // // "$Id: Fl_Menu_Bar.H 6614 2009-01-01 16:11:32Z matt " // // Menu bar header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Menu_Bar widget . */ #ifndef Fl_Menu_Bar_H #define Fl_Menu_Bar_H #include "Fl_Menu_.H" /** This widget provides a standard menubar interface. Usually you will put this widget along the top edge of your window. The height of the widget should be 30 for the menu titles to draw correctly with the default font. The items on the bar and the menus they bring up are defined by a single Fl_Menu_Item array. Because a Fl_Menu_Item array defines a hierarchy, the top level menu defines the items in the menubar, while the submenus define the pull-down menus. Sub-sub menus and lower pop up to the right of the submenus. \image html menubar.gif \image latex menubar.eps " menubar" width=12cm If there is an item in the top menu that is not a title of a submenu, then it acts like a "button" in the menubar. Clicking on it will pick it. When the user picks an item off the menu, the item's callback is done with the menubar as the Fl_Widget* argument. If the item does not have a callback the menubar's callback is done instead. Submenus will also pop up in response to shortcuts indicated by putting a '&' character in the name field of the menu item. If you put a '&' character in a top-level "button" then the shortcut picks it. The '&' character in submenus is ignored until the menu is popped up. Typing the shortcut() of any of the menu items will cause callbacks exactly the same as when you pick the item with the mouse. */ class FL_EXPORT Fl_Menu_Bar : public Fl_Menu_ { protected: void draw(); public: int handle(int); /** Creates a new Fl_Menu_Bar widget using the given position, size, and label string. The default boxtype is FL_UP_BOX. The constructor sets menu() to NULL. See Fl_Menu_ for the methods to set or change the menu. labelsize(), labelfont(), and labelcolor() are used to control how the menubar items are drawn. They are initialized from the Fl_Menu static variables, but you can change them if desired. label() is ignored unless you change align() to put it outside the menubar. The destructor removes the Fl_Menu_Bar widget and all of its menu items. */ Fl_Menu_Bar(int X, int Y, int W, int H,const char *l=0) : Fl_Menu_(X,Y,W,H,l) {} }; #endif // // End of "Id: Fl_Menu_Bar.H 6614 2009-01-01 16:11:32Z matt $". //  Added fltk-1.3/FL/Fl_Menu_Button.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72  // // "$Id: Fl_Menu_Button.H 6614 2009-01-01 16:11:32Z matt $" // // Menu button header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Menu_Button widget . */ #ifndef Fl_Menu_Button_H #define Fl_Menu_Button_H #include "Fl_Menu_.H" /** This is a button that when pushed pops up a menu (or hierarchy of menus) defined by an array of Fl_Menu_Item objects. \image html menu_button.gif \image latex menu_button.eps " menu_button" width=5cm Normally any mouse button will pop up a menu and it is lined up below the button as shown in the picture. However an Fl_Menu_Button may also control a pop-up menu. This is done by setting the type() , see below. The menu will also pop up in response to shortcuts indicated by putting a '&' character in the label(). Typing the shortcut() of any of the menu items will cause callbacks exactly the same as when you pick the item with the mouse. The '&' character in menu item names are only looked at when the menu is popped up, however. When the user picks an item off the menu, the item's callback is done with the menu_button as the Fl_Widget* argument. If the item does not have a callback the menu_button's callback is done instead. */ class FL_EXPORT Fl_Menu_Button : public Fl_Menu_ { protected: void draw(); public: // values for type: enum {POPUP1 = 1, POPUP2, POPUP12, POPUP3, POPUP13, POPUP23, POPUP123}; int handle(int); const Fl_Menu_Item* popup(); Fl_Menu_Button(int,int,int,int,const char * =0); }; #endif // // End of "$Id: Fl_Menu_Button.H 6614 2009-01-01 16:11:32Z matt $". //  Added fltk-1.3/FL/Fl_Menu_Item.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418  // // "$Id: Fl_Menu_Item.H 6902 2009-09-27 11:06:56Z matt $" // // Menu item header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // #ifndef Fl_Menu_Item_H #define Fl_Menu_Item_H # include "Fl_Widget.H" # include "Fl_Image.H" # if defined(__APPLE__) && defined(check) # undef check # endif enum { // values for flags: FL_MENU_INACTIVE = 1, ///< Deactivate menu item (gray out) FL_MENU_TOGGLE= 2, ///< Item is a checkbox toggle (shows checkbox for on/off state) FL_MENU_VALUE = 4, ///< The on/off state for checkbox/radio buttons (if set, state is 'on') FL_MENU_RADIO = 8, ///< Item is a radio button (one checkbox of many can be on) FL_MENU_INVISIBLE = 0x10, ///< Item will not show up (shortcut will work) FL_SUBMENU_POINTER = 0x20, ///< Indicates user_data() is a pointer to another menu array FL_SUBMENU = 0x40, ///< This item is a submenu to other items FL_MENU_DIVIDER = 0x80, ///< Creates divider line below this item. Also ends a group of radio buttons. FL_MENU_HORIZONTAL = 0x100 ///< ??? -- reserved }; extern FL_EXPORT Fl_Shortcut fl_old_shortcut(const char*); class Fl_Menu_; /** The Fl_Menu_Item structure defines a single menu item that is used by the Fl_Menu_ class. \code struct Fl_Menu_Item { const char* text; // label() ulong shortcut_; Fl_Callback* callback_; void* user_data_; int flags; uchar labeltype_; uchar labelfont_; uchar labelsize_; uchar labelcolor_; }; enum { // values for flags: FL_MENU_INACTIVE = 1, // Deactivate menu item (gray out) FL_MENU_TOGGLE = 2, // Item is a checkbox toggle (shows checkbox for on/off state) FL_MENU_VALUE = 4, // The on/off state for checkbox/radio buttons (if set, state is 'on') FL_MENU_RADIO = 8, // Item is a radio button (one checkbox of many can be on) FL_MENU_INVISIBLE = 0x10, // Item will not show up (shortcut will work) FL_SUBMENU_POINTER = 0x20, // Indicates user_data() is a pointer to another menu array FL_SUBMENU = 0x40, // This item is a submenu to other items FL_MENU_DIVIDER = 0x80, // Creates divider line below this item. Also ends a group of radio buttons. FL_MENU_HORIZONTAL = 0x100 // ??? -- reserved }; \endcode Typically menu items are statically defined; for example: \code Fl_Menu_Item popup[] = { {"&alpha", FL_ALT+'a', the_cb, (void*)1}, {"&beta", FL_ALT+'b', the_cb, (void*)2}, {"gamma", FL_ALT+'c', the_cb, (void*)3, FL_MENU_DIVIDER}, {"&strange", 0, strange_cb}, {"&charm", 0, charm_cb}, {"&truth", 0, truth_cb}, {"b&eauty", 0, beauty_cb}, {"sub&menu", 0, 0, 0, FL_SUBMENU}, {"one"}, {"two"}, {"three"}, {0}, {"inactive", FL_ALT+'i', 0, 0, FL_MENU_INACTIVE|FL_MENU_DIVIDER}, {"invisible",FL_ALT+'i', 0, 0, FL_MENU_INVISIBLE}, {"check", FL_ALT+'i', 0, 0, FL_MENU_TOGGLE|FL_MENU_VALUE}, {"box", FL_ALT+'i', 0, 0, FL_MENU_TOGGLE}, {0}}; \endcode produces: \image html menu.gif \image latex menu.eps "menu" width=10cm A submenu title is identified by the bit FL_SUBMENU in the flags field, and ends with a label() that is NULL. You can nest menus to any depth. A pointer to the first item in the submenu can be treated as an Fl_Menu array itself. It is also possible to make separate submenu arrays with FL_SUBMENU_POINTER flags. You should use the method functions to access structure members and not access them directly to avoid compatibility problems with future releases of FLTK. */ struct FL_EXPORT Fl_Menu_Item { const char *text; ///< menu item text, returned by label() int shortcut_; ///< menu item shortcut Fl_Callback *callback_; ///< menu item callback void *user_data_; ///< menu item user_data for 3rd party apps int flags; ///< menu item flags like FL_MENU_TOGGLE, FL_MENU_RADIO uchar labeltype_; ///< how the menu item text looks like Fl_Font labelfont_; ///< which font for this menu item text Fl_Fontsize labelsize_; ///< size of menu item text Fl_Color labelcolor_; ///< menu item text color // advance N items, skipping submenus: const Fl_Menu_Item *next(int=1) const; /** Advances a pointer by n items through a menu array, skipping the contents of submenus and invisible items. There are two calls so that you can advance through const and non-const data. */ Fl_Menu_Item *next(int i=1) { return (Fl_Menu_Item*)(((const Fl_Menu_Item*)this)->next(i));} /** Returns the first menu item, same as next(0). */ const Fl_Menu_Item *first() const { return next(0); } /** Returns the first menu item, same as next(0). */ Fl_Menu_Item *first() { return next(0); } // methods on menu items: /** Returns the title of the item. A NULL here indicates the end of the menu (or of a submenu). A '&' in the item will print an underscore under the next letter, and if the menu is popped up that letter will be a "shortcut" to pick that item. To get a real '&' put two in a row. */ const char* label() const {return text;} /** See const char* Fl_Menu_Item::label() const */ void label(const char* a) {text=a;} /** See const char* Fl_Menu_Item::label() const */ void label(Fl_Labeltype a,const char* b) {labeltype_ = a; text = b;} /** A labeltype identifies a routine that draws the label of the widget. This can be used for special effects such as emboss, or to use the label() pointer as another form of data such as a bitmap. The value FL_NORMAL_LABEL prints the label as text. */ Fl_Labeltype labeltype() const {return (Fl_Labeltype)labeltype_;} /** A labeltype identifies a routine that draws the label of the widget. This can be used for special effects such as emboss, or to use the label() pointer as another form of data such as a bitmap. The value FL_NORMAL_LABEL prints the label as text. */ void labeltype(Fl_Labeltype a) {labeltype_ = a;} /** This color is passed to the labeltype routine, and is typically the color of the label text. This defaults to FL_BLACK. If this color is not black fltk will not use overlay bitplanes to draw the menu - this is so that images put in the menu draw correctly. */ Fl_Color labelcolor() const {return labelcolor_;} /** See Fl_Color Fl_Menu_Item::labelcolor() const */ void labelcolor(Fl_Color a) {labelcolor_ = a;} /** Fonts are identified by small 8-bit indexes into a table. See the enumeration list for predefined fonts. The default value is a Helvetica font. The function Fl::set_font() can define new fonts. */ Fl_Font labelfont() const {return labelfont_;} /** Fonts are identified by small 8-bit indexes into a table. See the enumeration list for predefined fonts. The default value is a Helvetica font. The function Fl::set_font() can define new fonts. */ void labelfont(Fl_Font a) {labelfont_ = a;} /** Gets the label font pixel size/height.*/ Fl_Fontsize labelsize() const {return labelsize_;} /** Sets the label font pixel size/height.*/ void labelsize(Fl_Fontsize a) {labelsize_ = a;} /** Each item has space for a callback function and an argument for that function. Due to back compatibility, the Fl_Menu_Item itself is not passed to the callback, instead you have to get it by calling ((Fl_Menu_*)w)->mvalue() where w is the widget argument. */ Fl_Callback_p callback() const {return callback_;} /** See Fl_Callback_p Fl_MenuItem::callback() const */ void callback(Fl_Callback* c, void* p) {callback_=c; user_data_=p;} /** See Fl_Callback_p Fl_MenuItem::callback() const */ void callback(Fl_Callback* c) {callback_=c;} /** See Fl_Callback_p Fl_MenuItem::callback() const */ void callback(Fl_Callback0*c) {callback_=(Fl_Callback*)c;} /** See Fl_Callback_p Fl_MenuItem::callback() const */ void callback(Fl_Callback1*c, long p=0) {callback_=(Fl_Callback*)c; user_data_=(void*)p;} /** Get or set the user_data argument that is sent to the callback function. */ void* user_data() const {return user_data_;} /** Get or set the user_data argument that is sent to the callback function. */ void user_data(void* v) {user_data_ = v;} /** For convenience you can also define the callback as taking a long argument. This is implemented by casting this to a Fl_Callback and casting the long to a void* and may not be portable to some machines. */ long argument() const {return (long)user_data_;} /** For convenience you can also define the callback as taking a long argument. This is implemented by casting this to a Fl_Callback and casting the long to a void* and may not be portable to some machines. */ void argument(long v) {user_data_ = (void*)v;} /** Gets what key combination shortcut will trigger the menu item. */ int shortcut() const {return shortcut_;} /** Sets exactly what key combination will trigger the menu item. The value is a logical 'or' of a key and a set of shift flags, for instance FL_ALT+'a' or FL_ALT+FL_F+10 or just 'a'. A value of zero disables the shortcut. The key can be any value returned by Fl::event_key(), but will usually be an ASCII letter. Use a lower-case letter unless you require the shift key to be held down. The shift flags can be any set of values accepted by Fl::event_state(). If the bit is on that shift key must be pushed. Meta, Alt, Ctrl, and Shift must be off if they are not in the shift flags (zero for the other bits indicates a "don't care" setting). */ void shortcut(int s) {shortcut_ = s;} /** Returns true if either FL_SUBMENU or FL_SUBMENU_POINTER is on in the flags. FL_SUBMENU indicates an embedded submenu that goes from the next item through the next one with a NULL label(). FL_SUBMENU_POINTER indicates that user_data() is a pointer to another menu array. */ int submenu() const {return flags&(FL_SUBMENU|FL_SUBMENU_POINTER);} /** Returns true if a checkbox will be drawn next to this item. This is true if FL_MENU_TOGGLE or FL_MENU_RADIO is set in the flags. */ int checkbox() const {return flags&FL_MENU_TOGGLE;} /** Returns true if this item is a radio item. When a radio button is selected all "adjacent" radio buttons are turned off. A set of radio items is delimited by an item that has radio() false, or by an item with FL_MENU_DIVIDER turned on. */ int radio() const {return flags&FL_MENU_RADIO;} /** Returns the current value of the check or radio item. */ int value() const {return flags&FL_MENU_VALUE;} /** Turns the check or radio item "on" for the menu item. Note that this does not turn off any adjacent radio items like set_only() does. */ void set() {flags |= FL_MENU_VALUE;} /** Turns the check or radio item "off" for the menu item. */ void clear() {flags &= ~FL_MENU_VALUE;} void setonly(); /** Gets the visibility of an item. */ int visible() const {return !(flags&FL_MENU_INVISIBLE);} /** Makes an item visible in the menu. */ void show() {flags &= ~FL_MENU_INVISIBLE;} /** Hides an item in the menu. */ void hide() {flags |= FL_MENU_INVISIBLE;} /** Gets whether or not the item can be picked. */ int active() const {return !(flags&FL_MENU_INACTIVE);} /** Allows a menu item to be picked. */ void activate() {flags &= ~FL_MENU_INACTIVE;} /** Prevents a menu item from being picked. Note that this will also cause the menu item to appear grayed-out. */ void deactivate() {flags |= FL_MENU_INACTIVE;} /** Returns non 0 if FL_INACTIVE and FL_INVISIBLE are cleared, 0 otherwise. */ int activevisible() const {return !(flags & (FL_MENU_INACTIVE|FL_MENU_INVISIBLE));} // compatibility for FLUID so it can set the image of a menu item... /** compatibility api for FLUID, same as a->label(this) */ void image(Fl_Image* a) {a->label(this);} /** compatibility api for FLUID, same as a.label(this) */ void image(Fl_Image& a) {a.label(this);} // used by menubar: int measure(int* h, const Fl_Menu_*) const; void draw(int x, int y, int w, int h, const Fl_Menu_*, int t=0) const; // popup menus without using an Fl_Menu_ widget: const Fl_Menu_Item* popup( int X, int Y, const char *title = 0, const Fl_Menu_Item* picked=0, const Fl_Menu_* = 0) const; const Fl_Menu_Item* pulldown( int X, int Y, int W, int H, const Fl_Menu_Item* picked = 0, const Fl_Menu_* = 0, const Fl_Menu_Item* title = 0, int menubar=0) const; const Fl_Menu_Item* test_shortcut() const; const Fl_Menu_Item* find_shortcut(int *ip=0) const; /** Calls the Fl_Menu_Item item's callback, and provides the Fl_Widget argument (and optionally overrides the user_data() argument). You must first check that callback() is non-zero before calling this. */ void do_callback(Fl_Widget* o) const {callback_(o, user_data_);} /** Calls the Fl_Menu_Item item's callback, and provides the Fl_Widget argument (and optionally overrides the user_data() argument). You must first check that callback() is non-zero before calling this. */ void do_callback(Fl_Widget* o,void* arg) const {callback_(o, arg);} /** Calls the Fl_Menu_Item item's callback, and provides the Fl_Widget argument (and optionally overrides the user_data() argument). You must first check that callback() is non-zero before calling this. */ void do_callback(Fl_Widget* o,long arg) const {callback_(o, (void*)arg);} // back-compatibility, do not use: /** back compatibility only \deprecated. */ int checked() const {return flags&FL_MENU_VALUE;} /** back compatibility only \deprecated. */ void check() {flags |= FL_MENU_VALUE;} /** back compatibility only \deprecated. */ void uncheck() {flags &= ~FL_MENU_VALUE;} int add(const char*, int shortcut, Fl_Callback*, void* =0, int = 0); /** See int add(const char*, int shortcut, Fl_Callback*, void*, int) */ int add(const char*a, const char* b, Fl_Callback* c, void* d = 0, int e = 0) { return add(a,fl_old_shortcut(b),c,d,e);} int size() const ; }; typedef Fl_Menu_Item Fl_Menu; // back compatibility enum { // back-compatibility enum: FL_PUP_NONE = 0, FL_PUP_GREY = FL_MENU_INACTIVE, FL_PUP_GRAY = FL_MENU_INACTIVE, FL_MENU_BOX = FL_MENU_TOGGLE, FL_PUP_BOX = FL_MENU_TOGGLE, FL_MENU_CHECK = FL_MENU_VALUE, FL_PUP_CHECK = FL_MENU_VALUE, FL_PUP_RADIO = FL_MENU_RADIO, FL_PUP_INVISIBLE = FL_MENU_INVISIBLE, FL_PUP_SUBMENU = FL_SUBMENU_POINTER }; #endif // // End of "$Id: Fl_Menu_Item.H 6902 2009-09-27 11:06:56Z matt $". //  Added fltk-1.3/FL/Fl_Menu_Window.H.      > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68  // // "$Id: Fl_Menu_Window.H 6909 2009-09-28 14:41:43Z matt $" // // Menu window header file for the Fast Light Tool Kit (FLTK). // // Copyright 1998-2009 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA. // // Please report all bugs and problems on the following page: // // http://www.fltk.org/str.php // /* \file Fl_Menu_Window widget . */ #ifndef Fl_Menu_Window_H #define Fl_Menu_Window_H #include "Fl_Single_Window.H" /** The Fl_Menu_Window widget is a window type used for menus. By default the window is drawn in the hardware overlay planes if they are available so that the menu don't force the rest of the window to redraw. */ class FL_EXPORT Fl_Menu_Window : public Fl_Single_Window { public: void show(); void erase(); void flush(); void hide(); /** Tells if hardware overlay mode is set */ unsigned int overlay() {return !(flags()&NO_OVERLAY);} /** Tells FLTK to use hardware overlay planes if they are available. */ void set_overlay() {clear_flag(NO_OVERLAY);} /** Tells FLTK to use normal drawing planes instead of overlay planes. This is usually necessary if your menu contains multi-color pixmaps. */ void clear_overlay() {set_flag(NO_OVERLAY);} ~Fl_Menu_Window(); /** Creates a new Fl_Menu_Window widget using the given size, and label string. */ Fl_Menu_Window(int W, int H, const char *l = 0) : Fl_Single_Window(W,H,l) { image(0); } /** Creates a new Fl_Menu_Window widget using the given position, size, and label string. */ Fl_Menu_Window(int X, int Y, int W, int H, const char *l = 0) : Fl_Single_Window(X,Y,W,H,l) { image(0); } }; #endif // // End of "$Id: Fl_Menu_Window.H 6909 2009-09-28 14:41:43Z matt \$". // 

Added fltk-1.3/FL/Fl_Multi_Browser.H.

    `