Compare commits
878 Commits
2.90.4
...
native-layout
| Author | SHA1 | Date | |
|---|---|---|---|
| 54d44a9bd0 | |||
| 67194ed77b | |||
| deaa351630 | |||
| 2a2f7c0993 | |||
| face33a411 | |||
| cd7c3625d7 | |||
| e8184f2a46 | |||
| af8efa0b46 | |||
| 2425dad948 | |||
| 0293e2443d | |||
| c3395dd726 | |||
| 8526997205 | |||
| f3ff581c26 | |||
| 1e5d7c0225 | |||
| c6a44d8494 | |||
| 8d983a4547 | |||
| 904769b004 | |||
| 29685170cf | |||
| 3247a3a7cd | |||
| 1b77e36a59 | |||
| 523ea1c656 | |||
| c0b8104232 | |||
| 24fedeccac | |||
| 208e548ab1 | |||
| c1476c951e | |||
| 3e4e2b233b | |||
| 45e2176683 | |||
| d5a8a3c9bc | |||
| 1f1b404194 | |||
| 586bbc9b13 | |||
| e1143c2d45 | |||
| 06c2777d88 | |||
| 2766cd14ad | |||
| a676f9dada | |||
| 72fad93587 | |||
| 1abb8f6e7f | |||
| c05f344c0a | |||
| 891694d9ff | |||
| 10ff05fb0c | |||
| 1e33284d60 | |||
| f4f607690d | |||
| ff445e2b79 | |||
| 27ec5cd556 | |||
| a64869db9e | |||
| f300aefa7e | |||
| 1814ea6abd | |||
| d38bf4825a | |||
| 65a28efc15 | |||
| f05acd707d | |||
| 31d22d3083 | |||
| 97cbe801c1 | |||
| fb4661be6d | |||
| 54b8b51f43 | |||
| f91e5e2ac9 | |||
| 991eaa7580 | |||
| e00ffe3872 | |||
| 7325c67570 | |||
| 64fca99a89 | |||
| 65266d971e | |||
| 50aec80efb | |||
| 014fc1f73a | |||
| 595b27e22d | |||
| 1fe89643a5 | |||
| fe16bdd8d4 | |||
| a0e0c9e89c | |||
| e5ed2c02a3 | |||
| 56f71f0123 | |||
| 29a758d4c2 | |||
| 1dc0502b4a | |||
| 8856bfc60e | |||
| 7eabb8fd3c | |||
| 64a852dc76 | |||
| 7451827cf9 | |||
| b415d2f79b | |||
| ab93613037 | |||
| f3d6aa8bf3 | |||
| 04fd195b9b | |||
| f25ad7899a | |||
| 0a1130dcb9 | |||
| 07d3f20202 | |||
| b99348e443 | |||
| 091335fcb4 | |||
| 2201b2abb6 | |||
| b05e897453 | |||
| d9b459dd64 | |||
| 6cad69e32a | |||
| 1b1845863a | |||
| c6b86761d6 | |||
| 7b5656b492 | |||
| 4a17e27a1e | |||
| cc70f342d0 | |||
| aad72e59fa | |||
| dd61c2bdea | |||
| e9915fc8d6 | |||
| aa63485b87 | |||
| 1e3448f222 | |||
| 0baa3feb4b | |||
| e9b85cf100 | |||
| 42a0a8143b | |||
| 3a89cc150c | |||
| 83372be93e | |||
| 4def73b386 | |||
| 379fc17fa9 | |||
| 4ddff2691b | |||
| 325a00e40d | |||
| 7764ee564c | |||
| f11207c33e | |||
| b62b834eb5 | |||
| 7f8aaf04da | |||
| fe2815026b | |||
| 2758329204 | |||
| effdde9471 | |||
| 90ee7ca493 | |||
| 37d62149bb | |||
| 0a3431e8f6 | |||
| 84297150e8 | |||
| 69b6dbdb08 | |||
| 26f21cf0e9 | |||
| 00152ff835 | |||
| 1783b227e8 | |||
| 7587ee2dde | |||
| 4d928459d3 | |||
| 03842616fb | |||
| 298b3643aa | |||
| 593b32c6ab | |||
| ce977a1a33 | |||
| f8ac83bc07 | |||
| e49c130018 | |||
| d854499f4a | |||
| 6b7efdf8a1 | |||
| d52eb49529 | |||
| c6f4e71a31 | |||
| c35fa9bc5a | |||
| dbd395a7ac | |||
| 41fcf40648 | |||
| 482637a41e | |||
| 804ad0dd88 | |||
| 4870f2ec30 | |||
| ab27b01fb9 | |||
| 551fa5c8df | |||
| 91a49bac5a | |||
| 4847b9a940 | |||
| f43610e110 | |||
| bf1f03ad5d | |||
| c9dd25bd11 | |||
| c4b452a22c | |||
| c6dcef5089 | |||
| 82f521b514 | |||
| 063454f630 | |||
| 7fd15c82bf | |||
| 7e753a9a86 | |||
| 5e2c943742 | |||
| 1f9eb57338 | |||
| 34e63dcd46 | |||
| 3f101bb08c | |||
| 1c6b3f53a0 | |||
| a44969e877 | |||
| ae47b7925a | |||
| e3be606a1c | |||
| 7b4cf7587a | |||
| 40e3d43394 | |||
| a1c2a00d63 | |||
| 7d9c4b71a9 | |||
| 46e65a9164 | |||
| 6f74ff20a2 | |||
| b1924555df | |||
| 104fdae2bf | |||
| c8afa3f000 | |||
| bd52a8541e | |||
| 42c71a1d4a | |||
| f332976871 | |||
| b012f0f930 | |||
| 07e38c51e8 | |||
| 1577a7d415 | |||
| 26d837dd2f | |||
| 0059a30f0d | |||
| 4a9c3bc214 | |||
| 252a8fc048 | |||
| 1b7b30bf31 | |||
| 4210ec87b0 | |||
| 067f418604 | |||
| 40dbb2deb2 | |||
| 5d48658f58 | |||
| b6306a0def | |||
| 76b0a349ef | |||
| 3d77c49e16 | |||
| 26fcfcc5a6 | |||
| 6b3a2fede6 | |||
| 3d942908d3 | |||
| 3204cf726c | |||
| 5bf0ed62d7 | |||
| 4011b70928 | |||
| 8c4783da05 | |||
| e80db673b1 | |||
| 6a28e7b164 | |||
| 876c0b2937 | |||
| 5fa4a05ccc | |||
| 6c6bb9b3d3 | |||
| 45aafa477f | |||
| 12e83244b1 | |||
| 2164e18cd8 | |||
| fe1a39b1f2 | |||
| df5ade16ab | |||
| b3b22c31b9 | |||
| 4ef5035674 | |||
| bfbfa9a589 | |||
| 50f5b1289c | |||
| e020217622 | |||
| 0b2e5bcb30 | |||
| 804c800979 | |||
| 10ceb9da68 | |||
| 9016f0d9a6 | |||
| 005e8a6c2f | |||
| af7a187919 | |||
| f7a6c05158 | |||
| c9340c37a9 | |||
| 02b50d71ce | |||
| a64bd5d1f0 | |||
| 7ef9cc3a1c | |||
| 491bfd6355 | |||
| 41c2024d22 | |||
| 3d3e9d85d1 | |||
| af04aeeaed | |||
| de8b07c3df | |||
| 0e1eee26b9 | |||
| ad3e451632 | |||
| dd6aa6d1cf | |||
| d73c11b549 | |||
| 52e5f36dc3 | |||
| 9c26bd525f | |||
| 9f762fe86c | |||
| e2a82c70b4 | |||
| fa565f3a3e | |||
| 0cb7aa9c7b | |||
| 8c14bf009d | |||
| 4f47197d33 | |||
| 4a2905c34b | |||
| 0cb1f9a180 | |||
| f65265fff9 | |||
| 99babef4b8 | |||
| d25c4f9dc1 | |||
| ddd32757be | |||
| 4ff413f48d | |||
| 59aacd7935 | |||
| 501eeaff11 | |||
| ffa07ee21e | |||
| f730af8360 | |||
| 1229bfc620 | |||
| 24d8c776d4 | |||
| 813da6a39a | |||
| bbebe979da | |||
| d6bfd81323 | |||
| bddb72476c | |||
| b2545e1732 | |||
| 203c06342d | |||
| 3115de0c36 | |||
| 72856830e7 | |||
| 94f7cf0347 | |||
| c4119e58cf | |||
| 1b526bfcc1 | |||
| 7d3cb3f9d9 | |||
| 6917d46749 | |||
| ce08b9bb01 | |||
| db3af409cc | |||
| 0ea8572d89 | |||
| e057cb8b4d | |||
| 434b3e1072 | |||
| 2944561ba3 | |||
| 8805b58e62 | |||
| 6a5f77a992 | |||
| 7993ee6d0e | |||
| a0a302f7f7 | |||
| 6a88255e00 | |||
| c411df5406 | |||
| 14cc894dd7 | |||
| dc7a8f9be7 | |||
| 0b29f4e769 | |||
| 374d5094a3 | |||
| 83c20d4b32 | |||
| ca7d3f9081 | |||
| fc170551b6 | |||
| 6334d13de5 | |||
| 05e33f69eb | |||
| cc09ec0732 | |||
| c989d3000a | |||
| 97fbf97be2 | |||
| 1516c86ca4 | |||
| e6ed4da215 | |||
| 05134768fe | |||
| 8313c7fdbb | |||
| e4a83370c4 | |||
| cd00b0a490 | |||
| 8b917eeaf6 | |||
| 159caba3e2 | |||
| ddc184ec79 | |||
| 48c34b6868 | |||
| ac94b406a1 | |||
| aa8a1a8a8e | |||
| a151eac4fb | |||
| 416d132a72 | |||
| 2acf529b3b | |||
| eff92cb1d6 | |||
| bde0f9a8f6 | |||
| d819bc4814 | |||
| 9c6696dfcc | |||
| 709e05cdb2 | |||
| ccacd3a46a | |||
| c9d08d02e5 | |||
| 4f37e6833c | |||
| aaf70d1327 | |||
| de285edc72 | |||
| 2513636877 | |||
| 6b19815f87 | |||
| ad571a3a5e | |||
| 727122b8d6 | |||
| f3c3e47db7 | |||
| e98f760e9c | |||
| e42033d2cc | |||
| 7b9e2b941c | |||
| 1e706ed64f | |||
| 8868e77fa0 | |||
| 7182a2dc19 | |||
| c7bd2ad1c9 | |||
| c4f280651a | |||
| 075661d376 | |||
| 7fd148fc59 | |||
| d0d2a6f12c | |||
| 09fbed7bc9 | |||
| a50843e160 | |||
| 25fc4d97f8 | |||
| 1308731580 | |||
| c3a59fbfcc | |||
| 54ac92aaaf | |||
| 089892df27 | |||
| f7a8bac5e6 | |||
| 23c9cee274 | |||
| 6a48a042c7 | |||
| 0fa7d810e7 | |||
| ef2d37cdaf | |||
| ac3ddfa2a7 | |||
| acf33c9e4c | |||
| 90ac7b915c | |||
| f7608c33ac | |||
| 9c026fb32e | |||
| 1ac8d80e34 | |||
| fea39c078b | |||
| 4c16995868 | |||
| 61d4a019f8 | |||
| 0cef9c2bbe | |||
| 65ac54bb23 | |||
| a581401920 | |||
| 805e0d1082 | |||
| 9f1939cbd5 | |||
| 4729460a4f | |||
| 3fc31e88b0 | |||
| db5fc43759 | |||
| 56e7abb8a4 | |||
| 755bd51757 | |||
| a6fcc75774 | |||
| 3df6726656 | |||
| f1620b5ce1 | |||
| 46206f8bb8 | |||
| 600fbd3e74 | |||
| 66048b2f92 | |||
| 9ee5176492 | |||
| a9e99e7f5b | |||
| c661eb73a1 | |||
| a3057d0150 | |||
| 5eb76955fd | |||
| 8f21b09eee | |||
| e85dfc7cc4 | |||
| d2b1da4e84 | |||
| 53b9bdc3fc | |||
| 1c4ce45a42 | |||
| 89d28eb09d | |||
| 92f4882497 | |||
| 559ae63f01 | |||
| 9b713fa4fd | |||
| 14fe04ec89 | |||
| 6f5084551a | |||
| 2a72ffd4de | |||
| a1a1b135ac | |||
| 7489c260eb | |||
| 84015d4d3f | |||
| 39b47eaf25 | |||
| b926ce719b | |||
| d18abf42b7 | |||
| 17b8bee168 | |||
| 46794cc65c | |||
| 638e415a6d | |||
| a513bdf3f7 | |||
| 8f19db7565 | |||
| 548ebc29e5 | |||
| 119d48c89b | |||
| d54c2cfeee | |||
| 32c95ebe27 | |||
| 24a867f8da | |||
| 4f8dbd4a8d | |||
| 11ee2abacc | |||
| a66e4ebe1a | |||
| 472b9d6f66 | |||
| 1481ab6626 | |||
| 50266ca95d | |||
| 2c40c2b7c8 | |||
| 3a1ba3bd1e | |||
| 316b9da873 | |||
| 89d4eb6ded | |||
| ad8f1ef85b | |||
| 7f985e760a | |||
| 3eb197b51f | |||
| fb48e023d2 | |||
| e3bd926c1e | |||
| 73030c462f | |||
| 79ef5de505 | |||
| 7844d3b8db | |||
| f760538f17 | |||
| 61e34032ec | |||
| 2a12f74c8e | |||
| 0824862e3b | |||
| a2b72c5953 | |||
| 4047d0526d | |||
| 93fa95e79f | |||
| 2686af2fbb | |||
| 99e8a76cab | |||
| 8397e8e219 | |||
| 623c6239ac | |||
| ae5700f64b | |||
| e15e37b6ce | |||
| 8b2108a8a4 | |||
| 1d8aec51cc | |||
| 8740bd2faf | |||
| 9ddef2365f | |||
| 3ccc617052 | |||
| 4198dd8519 | |||
| 59e7571aae | |||
| 32d365f476 | |||
| 35105ab2b4 | |||
| 03dfaf3c3e | |||
| 651bed57a4 | |||
| 208ba9bb50 | |||
| 360e2c4dd5 | |||
| fd66586b33 | |||
| add39dfea8 | |||
| c9579f3ca4 | |||
| 63958858c1 | |||
| a4086282c1 | |||
| c3da4007db | |||
| e569c77648 | |||
| f0b205f40c | |||
| e83a8826e6 | |||
| 95b3e63057 | |||
| 6c76243f46 | |||
| 32869d439d | |||
| b220c2b975 | |||
| 119a04e0cb | |||
| 963e1ec033 | |||
| 76267f9d06 | |||
| dcdb00adb4 | |||
| 92d34337f7 | |||
| 519eae8729 | |||
| 3a34295b9c | |||
| 080e8ab0a8 | |||
| ae66d4feb4 | |||
| cffda84e93 | |||
| 7df17ad475 | |||
| cd3510ce1f | |||
| 237ed3bbf8 | |||
| c4b129bac2 | |||
| 02068350ff | |||
| 57550e1b47 | |||
| 5e8c274e32 | |||
| 97f361c98f | |||
| ca513cec2e | |||
| de401fd06d | |||
| decbe42212 | |||
| f03ce229e9 | |||
| 5d5332a493 | |||
| 5f1827983b | |||
| 1fa7f1085e | |||
| 14d4bc3c40 | |||
| c774b0fbdb | |||
| 5a02536da4 | |||
| a37ec87ed7 | |||
| cfa3a71c7b | |||
| 2db020890e | |||
| b13480702b | |||
| b478081b7d | |||
| 331d77f3d7 | |||
| 37c502eae3 | |||
| 5649431acb | |||
| ccc26207fe | |||
| b68801f168 | |||
| 7b213d5604 | |||
| 610e29892e | |||
| 9bac13b1f5 | |||
| 761b0ea3ae | |||
| 188884a9b1 | |||
| 831afa2159 | |||
| 760ba34bd8 | |||
| 4d07fa5772 | |||
| 1e64e36b58 | |||
| da49daecc4 | |||
| 73ae8a787e | |||
| e0efb8798a | |||
| e8bf80ebea | |||
| 8630657324 | |||
| 0a451f508b | |||
| 6dd7e5af08 | |||
| a625e587a3 | |||
| 17bd528df5 | |||
| 58ef2afdfa | |||
| 6d4bae5ccc | |||
| c1c9b7dfc8 | |||
| a22ebc974f | |||
| 59db821725 | |||
| 7f1801eae1 | |||
| c122d31c29 | |||
| a8d805ffbc | |||
| ff25b0dc20 | |||
| 5cd6d309ea | |||
| da426ec97c | |||
| 8dd3317502 | |||
| 526aac1fda | |||
| 41621e212b | |||
| 5fd0c28c78 | |||
| 671c506dfc | |||
| 4181abd69a | |||
| 6eed185502 | |||
| 8f6a014de4 | |||
| 847d401df3 | |||
| 0310626938 | |||
| dec093d9f1 | |||
| 3e469d737e | |||
| f1074be1ed | |||
| 8c035b6048 | |||
| 373128ce29 | |||
| de6314d084 | |||
| d203b830a9 | |||
| 2883a274cc | |||
| 8adfc326f8 | |||
| b806701cdb | |||
| c90ba0a3be | |||
| 90cd0f6ae7 | |||
| ac34031b4e | |||
| fe603cccf2 | |||
| 5616a82c0a | |||
| 917f5c1272 | |||
| 1c5ee1df12 | |||
| ccc3d2c69f | |||
| c1a2ecc369 | |||
| 90db251624 | |||
| a94ff624b6 | |||
| d3ef6af1a6 | |||
| 6852137e13 | |||
| 82efd2d92f | |||
| 910ad4872c | |||
| 0a8043da13 | |||
| 4a7cff0cab | |||
| cd9a9e1548 | |||
| 9ee3d73a19 | |||
| 1af1362a36 | |||
| 6330ea9e43 | |||
| 1bfa931e20 | |||
| 4682d563cf | |||
| 0fd82767ff | |||
| ad9a9b7915 | |||
| 1411613a70 | |||
| a9e96106f9 | |||
| edbee1d9fc | |||
| 442f7fb2a6 | |||
| a1be4eccb0 | |||
| e42c29ca98 | |||
| ddcbc0e051 | |||
| 271d66fc81 | |||
| 7491e9e97a | |||
| 89d0955431 | |||
| 0754f2d72f | |||
| 133f0744b9 | |||
| 8eeeb97de6 | |||
| cfa241a891 | |||
| 678e738f8d | |||
| 5c2966dda3 | |||
| b35c2e695a | |||
| 8fbccfb1a9 | |||
| 66c0673a41 | |||
| aedc5e967f | |||
| c90ca18c2f | |||
| 87b0f02403 | |||
| 9db9c5f247 | |||
| 6fae72c419 | |||
| a2fef51b64 | |||
| 461f055da6 | |||
| 5828453ae5 | |||
| e1184e362c | |||
| 3ea904fa49 | |||
| 18a06d6b6a | |||
| 3ce68cd5de | |||
| e69979f7b6 | |||
| 5f1b5d2406 | |||
| 703f7121ae | |||
| 1af22acbf7 | |||
| ff27677957 | |||
| 9114c4c410 | |||
| bf976cc1e4 | |||
| e6db32de44 | |||
| c17dad9d32 | |||
| cbbffa18f8 | |||
| 57d870ac5b | |||
| d5c3fb5231 | |||
| 22d4515d9a | |||
| 675745e1ca | |||
| 65acc3641a | |||
| de9c5f8d3d | |||
| 9ddda9c844 | |||
| bcc8494899 | |||
| 6fb0e3a09f | |||
| f17a345998 | |||
| c1da2a9204 | |||
| 3dfaf72745 | |||
| 37a499cea6 | |||
| e6bd773fda | |||
| 133502d798 | |||
| ec4c06105d | |||
| 6ce52cab3c | |||
| 0ddeccefe9 | |||
| e3a4dfe0e1 | |||
| 168fbac7f6 | |||
| 8c041cde30 | |||
| 92a1382bd6 | |||
| 28cf61a2ca | |||
| 1ca6edf6bf | |||
| 978a031b76 | |||
| e2b8112fd8 | |||
| ecce43bcd1 | |||
| 4d7ecabaf0 | |||
| a3b039d317 | |||
| 59942f91cb | |||
| 801708b9e6 | |||
| fbf1de72c4 | |||
| bf9875860b | |||
| 511560ba88 | |||
| d4a59142ad | |||
| 75686d04a0 | |||
| e2a662b93d | |||
| 47e824a5e4 | |||
| ad3b5941ab | |||
| 86f0bd5cc9 | |||
| 41d2a4d059 | |||
| 754dc6491b | |||
| f66ebd8e59 | |||
| e1d182ce5c | |||
| c0228f609c | |||
| 997c7b96a8 | |||
| 817d1f93cd | |||
| 2d9aaf4cf3 | |||
| 6fe5203c0a | |||
| 324ab58710 | |||
| 558a02c730 | |||
| f86456ccb5 | |||
| 0991115ada | |||
| 58030409d8 | |||
| 9b63c322ee | |||
| 01bdc682fd | |||
| d4813408b0 | |||
| a8014e6fec | |||
| 7f2cc85db9 | |||
| 80df961edb | |||
| 63d3b197c2 | |||
| 4427760bcc | |||
| 2de1f3f88c | |||
| 63f8313015 | |||
| dfb24fd56e | |||
| 3a10216dd0 | |||
| 009acc263e | |||
| 5fd442eda2 | |||
| 56cc11a416 | |||
| ebf6ce274a | |||
| 9663801be7 | |||
| 56eafbaad8 | |||
| ad45f1ce9d | |||
| 06dfffa132 | |||
| 94fd7a3502 | |||
| 72f515a0f3 | |||
| 637c9f16e3 | |||
| 3c90ecf27b | |||
| 7fdb991b99 | |||
| 6736c085b3 | |||
| b71d539fd0 | |||
| c2b079ca05 | |||
| ee1d9df94c | |||
| c0b0b84c6e | |||
| 5e815bfee2 | |||
| db584abef3 | |||
| 932568d1ed | |||
| 4d40f88310 | |||
| 0677bb2785 | |||
| a46c1eba64 | |||
| abe267641a | |||
| 123717510f | |||
| 472753330d | |||
| 5ee19bdafe | |||
| a6e0fb92c6 | |||
| 3862bf3208 | |||
| fa740ae012 | |||
| 8ad3afce95 | |||
| 335549b46a | |||
| dba6592601 | |||
| 33960b737d | |||
| d562611660 | |||
| c6b6ab0599 | |||
| 828f5cbe2e | |||
| 04c54efe5c | |||
| a5272c82a6 | |||
| d219adfa5a | |||
| 75e75cd305 | |||
| 41671d1514 | |||
| 9a812edff8 | |||
| 4f3d5e3655 | |||
| b81d141a26 | |||
| d20ac9715e | |||
| 7cf895257f | |||
| 3604c279ff | |||
| 66e85255aa | |||
| 78bde3c4c0 | |||
| 99ee143a71 | |||
| f73115b6a0 | |||
| ef5e6c1057 | |||
| 0df65779bb | |||
| a9cf42ea42 | |||
| 59504f58d9 | |||
| eaab96c066 | |||
| bcbb976d91 | |||
| ab6927e4fa | |||
| 813bee6f0a | |||
| 0a07e9733b | |||
| 404e7d0e00 | |||
| 7cabad6b77 | |||
| e4e477161a | |||
| 7e9d384fc0 | |||
| ae16b31038 | |||
| f8f3b635a6 | |||
| c4f12b95cb | |||
| b74ee87b17 | |||
| b5f878dec8 | |||
| 15646b6e74 | |||
| 424842e3a9 | |||
| 0b51abbfdf | |||
| c4832a9d0e | |||
| 675b05f91d | |||
| dd1f0c46b3 | |||
| 2ed1bab6bf | |||
| c609c4e807 | |||
| 74b3875ab2 | |||
| aff8fb2ea2 | |||
| 337e53f62e | |||
| 12560cece2 | |||
| 9125ccb1cb | |||
| f50d06baea | |||
| 90cd7f44f1 | |||
| 34e8bd9dba | |||
| 1ac5011873 | |||
| ef44de1392 | |||
| 533ea97c67 | |||
| 1a03a65e36 | |||
| 1f38a7ac10 | |||
| 1cfe57530e | |||
| 1e1c5e3ca1 | |||
| 6adb034cb7 | |||
| eae60c34d2 | |||
| 85e3f22c19 | |||
| 0cfb94cdd4 | |||
| 319d2bb4f1 | |||
| df106318f8 | |||
| f40fea1317 | |||
| be27fba3f3 | |||
| 43f4398dbd | |||
| fa752d156b | |||
| a564e69e51 | |||
| 1564d8922a | |||
| 53fbf2a30a | |||
| 03a313d2a9 | |||
| 84e2a854dd | |||
| 237d97dc25 | |||
| 6d47681722 | |||
| 0809e06881 | |||
| 95a1c31c18 | |||
| 5a02283fbf | |||
| 6c5dffd1a3 | |||
| 300e6b84cd | |||
| 3e96cfe8fc | |||
| 52200eee01 | |||
| 78018767ba | |||
| b6cc7dbd21 | |||
| 6aae994a66 | |||
| b4ed51fd93 | |||
| 06e48c50a1 | |||
| 655dcff096 | |||
| 34573b53f3 | |||
| c1affa4f3c | |||
| c3987f9ee2 | |||
| 418d84f311 | |||
| 18132ecae5 | |||
| 905f988166 | |||
| 17f8b5e581 | |||
| eebb16eb1a | |||
| 289f3b1b2b | |||
| 42abeadbb8 | |||
| cd266cb8de | |||
| 14e0cbe2d3 | |||
| 7ad08f19aa | |||
| 9928158d41 | |||
| 680c1d26e3 | |||
| 6d9d23009c | |||
| 93b76327ec | |||
| a30585167f | |||
| deab62c29e | |||
| 02c37eb098 | |||
| e545ed58ed | |||
| f0e24348a0 | |||
| 4aa75fcf43 | |||
| d7ceebda3f | |||
| 804effba99 | |||
| d78cee6791 | |||
| 1c14997df2 | |||
| 5789ea35cc | |||
| 7f2e4c38a9 | |||
| 64f11c366a | |||
| 98d47b57bf | |||
| 019ccc686d | |||
| 88cae1769b | |||
| 18b233fe2a | |||
| 2326d76efa | |||
| ea4d2f9a52 | |||
| bba9e3e070 | |||
| 89a8f35b28 | |||
| c71bf29d24 | |||
| 1d0650f871 | |||
| 9d97153738 | |||
| 86f360fec2 | |||
| f1998d568a | |||
| 9f3ad94e75 | |||
| 4dbbcefe7c | |||
| 27065e257b | |||
| fca8db084d | |||
| 103f3a6a18 | |||
| c683dffa9e | |||
| ecedc58113 | |||
| 4a7c237b79 | |||
| 2f2486bd5b | |||
| ff82a56f28 | |||
| f463059f00 | |||
| 6d16148936 | |||
| 92ae8ebb01 | |||
| 380120bda9 | |||
| 2517035bc0 | |||
| 3651dc278d | |||
| 2c7058bd13 | |||
| ed639b211e | |||
| 49f050a9bc | |||
| 51dadc0a1a | |||
| 1700cbe458 | |||
| ee097eb7ab | |||
| 9f6c01c665 | |||
| 101ad51803 | |||
| 99f73c09f6 | |||
| 7c66a29e87 | |||
| 0eff4061ab | |||
| 9653cf57b6 | |||
| 06a5095dc5 | |||
| ee9115fb9f | |||
| 33d3f72b98 | |||
| 4ef145bda6 | |||
| 6e705d7087 | |||
| c2abe27b03 | |||
| c20c3fd757 | |||
| c5a0e04a8d | |||
| f04f94e881 | |||
| 16715a662e |
+10
-6
@@ -30,13 +30,17 @@ XVFB_START = \
|
||||
# call as: $(XVFB_START) && someprogram
|
||||
|
||||
# test: run all tests in cwd and subdirs
|
||||
test: ${TEST_PROGS}
|
||||
test: test-cwd test-recurse
|
||||
# test-cwd: run tests in cwd
|
||||
test-cwd: ${TEST_PROGS}
|
||||
@$(SKIP_GDKTARGET) || test -z "${TEST_PROGS}" || { \
|
||||
$(XVFB_START) && { set -e; ${GTESTER} --verbose ${TEST_PROGS}; }; \
|
||||
$(XVFB_START) && { set -e; $(TESTS_ENVIRONMENT) ${GTESTER} --verbose ${TEST_PROGS}; }; \
|
||||
}
|
||||
# test-recurse: run tests in subdirs
|
||||
test-recurse:
|
||||
@ for subdir in $(SUBDIRS) ; do \
|
||||
test "$$subdir" = "." -o "$$subdir" = "po" -o "$$subdir" = "po-properties" || \
|
||||
( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
|
||||
( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) test ) || exit $? ; \
|
||||
done
|
||||
# test-report: run tests in subdirs and generate report
|
||||
# perf-report: run tests in subdirs with -m perf and generate report
|
||||
@@ -77,6 +81,6 @@ test-report perf-report full-report: ${TEST_PROGS}
|
||||
rm -rf "$$GTESTER_LOGDIR"/ ; \
|
||||
${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
|
||||
}
|
||||
.PHONY: test test-report perf-report full-report
|
||||
# run make test as part of make check
|
||||
check-local: test
|
||||
.PHONY: test test-cwd test-recurse test-report perf-report full-report
|
||||
# run make test-cwd as part of make check
|
||||
check-local: test-cwd
|
||||
|
||||
@@ -1,3 +1,155 @@
|
||||
Overview of Changes from GTK+ 2.90.5 to 2.90.6
|
||||
==============================================
|
||||
|
||||
* All drawing done by GTK+ itself has been ported from
|
||||
GDK drawing APIs to cairo
|
||||
|
||||
* GtkExpander and GtkFrame now implement GtkSizeRequest
|
||||
|
||||
* GtkExpander gained a ::label-fill property to make the label
|
||||
fill the entire horizontal space
|
||||
|
||||
* Allow windows to be dragged by clicking on empty
|
||||
areas in menubars and toolbars
|
||||
|
||||
* GtkAboutDialog can now refer to licenses using a ::license-type
|
||||
enumeration instead of embedding the license text
|
||||
|
||||
* Deprecations and cleanups:
|
||||
- Remove GtkNotebookPage
|
||||
- Remove public struct members in many classes
|
||||
- Remove the GtkRecentManager::limit property
|
||||
- Remove all GDK drawing functions, ie gdk_draw_*. Use cairo instead
|
||||
- Remove all GdkGC functions. Use cairo instead
|
||||
- Remove all of GdkImage. Use cairo instead
|
||||
- Remove all of GdkRGB. Use cairo instead
|
||||
- Remove gdk_{bit,pix}map_create_from_data
|
||||
- GDK no longer depends on the render X extension
|
||||
|
||||
* New accessors:
|
||||
- gdk_cursor_get_cursor_type
|
||||
- gdk_device_get_n_axes
|
||||
- gdk_display_is_closed
|
||||
- gtk_notebook_get_tab_[hv]border
|
||||
|
||||
* New cairo-related APIs:
|
||||
- gdk_window_create_similar_surface
|
||||
- gdk_window_get_background_pattern
|
||||
|
||||
* Bugs fixed:
|
||||
90935 GtkIMContextClass inheritance ...
|
||||
97414 gtkaccellabel: s/seperator/separator/
|
||||
336225 Support for common licenses in about dialog
|
||||
554926 gtk_init_with_args: not setting translation domain...
|
||||
557263 Notebooks return 1 selection even if they have no pages
|
||||
579583 GtkStatusIcon's scroll-event documentation missing "Since: ..."
|
||||
580291 Gail does not work with custom treemodels
|
||||
596125 Property string fixes
|
||||
604391 Gtk-CRITICAL when switching between tab
|
||||
605190 Should delete the description of xim related options...
|
||||
609264 gtk_(tree/list)_store_set documentation unclear about ownership
|
||||
611313 Window dragging from menubars/toolbars
|
||||
612919 crash in System Monitor: I was moving up-down wit...
|
||||
614049 Allow packing options for GtkExpander label widgets
|
||||
614443 Doxygen 'forgets' #define documentation under certain conditions
|
||||
615474 gtk_widget_set_has_window() documentation is not correct
|
||||
618327 GtkNotebookPage should be deprecated
|
||||
621571 Fix damage events on offscreen windows
|
||||
622658 GTK_STOCK_FILE Stock Label
|
||||
623603 meld built with pygtk-2.16.0 giving warnings
|
||||
623865 gtkdnd: pointer grab may never finish (ungrab before grab)
|
||||
624087 Missing accessor for GdkCursor.type
|
||||
624224 Missing accessor for GdkDisplay.closed
|
||||
624270 crash in gtk_entry_completion_default_completion_func
|
||||
624333 Deprecate GtkRecentManager:limit
|
||||
624362 access an invalid ActionGroup
|
||||
624367 GtkButtonBox is broken
|
||||
624397 Move GtkBoxChild from public .h to gtkbox.c
|
||||
624432 GtkRadioMenuItem is broken
|
||||
624540 GtkRadionAction loop in its activate handler
|
||||
624687 switch-page bug when activated from menu
|
||||
624707 warnings when showing gnome-terminal menus on gtk master
|
||||
624779 GtkCalendar padding/margin/spacing/border/whatever is hard-coded
|
||||
625104 Don't try and use the child of a GtkSeparatorMenuItem
|
||||
625235 Tooltips cause warnings
|
||||
625300 Buttons order in dialogs broken in gtk+3
|
||||
625416 gtk_file_chooser_default_map should not reload directory
|
||||
625650 Add annotations to gtk_tree_model_iter_next() and...
|
||||
625655 win32 compile failure due to G_SEAL
|
||||
625715 comment string in GtkAboutDialog is not centered
|
||||
625953 GailAdjustment does not implement get_minimum_increment...
|
||||
626052 Activating a file in GtkFileChooserDialog activates action...
|
||||
626276 gtk_tree_selection_set_select_function() should allow...
|
||||
626514 License dialog doesn't take into account long copyrights
|
||||
|
||||
* Translation updates:
|
||||
Asturian
|
||||
Galician
|
||||
German
|
||||
Hebrew
|
||||
Indonesian
|
||||
Norwegian bokmål
|
||||
Punjabi
|
||||
Romanian
|
||||
Simplified Chinese
|
||||
Slovenian
|
||||
Spanish
|
||||
Swedish
|
||||
Traditional Chinese
|
||||
|
||||
|
||||
Overview of Changes from GTK+ 2.90.4 to 2.90.5
|
||||
==============================================
|
||||
|
||||
* Support NOCONFIGURE in autogen.sh to avoid running configure
|
||||
|
||||
* The cairo dependency has been bumped to 1.9.10
|
||||
|
||||
* Drop aliasing hacks instead use -Bsymbolic-funtions.
|
||||
|
||||
* Bugs:
|
||||
589904 Certain drawing in some widgets does not pass on...
|
||||
610346 Confusion between GtkWindow:allow-grow and GtkWindow:resizable
|
||||
613284 Replace GdkRegion with cairo_region_t
|
||||
617386 Migrate API docs from templates to source files (GtkButton)
|
||||
617389 Migrate API docs from templates to source files (GtkCalendar)
|
||||
617392 Migrate API docs from templates to source files (GtkCellEditable)
|
||||
621414 Can't select file on file browser popup after choosing to sort...
|
||||
622677 Remove GdkWindowObject public structure
|
||||
623239 also show num-lock warning
|
||||
623307 Annotate gdk_display_manager_list_displays return value
|
||||
623389 [iconview] Fix segfault when using rubberband selection
|
||||
623476 [windows] gdk fails to compile
|
||||
623520 gtk+ 3 fails to build from outside git source tree
|
||||
623845 Use -Bsymbolic
|
||||
461618 use GSlice for gtkrequisition
|
||||
|
||||
* Deprecations and cleanups:
|
||||
- GdkRegion has been removed, and region-using code has been ported
|
||||
to cairo_region_t and cairo_rectangle_int_t.
|
||||
- The deprecated GdkFont has been removed, together with vestigial
|
||||
uses in GTK+, including the GdkFontSel::font property and a GdkFont
|
||||
member in GtkStyle.
|
||||
- The GdkWindowObject structure has been removed from public headers.
|
||||
- The GdkWindow::allow-grow and ::allow-shrink properties have been removed.
|
||||
|
||||
* Quartz:
|
||||
- Misc fixed to clipping and color handling
|
||||
- Update the DND code for GdkDevice changes
|
||||
|
||||
* Translation updates:
|
||||
Breton
|
||||
Czech
|
||||
Estonian
|
||||
Galician
|
||||
Hebrew
|
||||
Kazakh
|
||||
Norwegian bokmål
|
||||
Slovenian
|
||||
Simplified Chinese
|
||||
Spanish
|
||||
|
||||
|
||||
Overview of Changes from GTK+ 2.90.3 to 2.90.4
|
||||
==============================================
|
||||
|
||||
|
||||
+7
-2
@@ -72,7 +72,12 @@ test $TEST_TYPE $FILE || {
|
||||
exit 1
|
||||
}
|
||||
|
||||
if test -z "$AUTOGEN_SUBDIR_MODE"; then
|
||||
# NOCONFIGURE is used by gnome-common; support both
|
||||
if ! test -z "$AUTOGEN_SUBDIR_MODE"; then
|
||||
NOCONFIGURE=1
|
||||
fi
|
||||
|
||||
if test -z "$NOCONFIGURE"; then
|
||||
if test -z "$*"; then
|
||||
echo "I am going to run ./configure with no arguments - if you wish "
|
||||
echo "to pass any to it, please specify them on the $0 command line."
|
||||
@@ -116,7 +121,7 @@ $AUTOMAKE --add-missing || exit $?
|
||||
autoconf || exit $?
|
||||
cd $ORIGDIR || exit $?
|
||||
|
||||
if test -z "$AUTOGEN_SUBDIR_MODE"; then
|
||||
if test -z "$NOCONFIGURE"; then
|
||||
$srcdir/configure --enable-maintainer-mode $AUTOGEN_CONFIGURE_ARGS "$@" || exit $?
|
||||
|
||||
echo
|
||||
|
||||
@@ -134,7 +134,6 @@
|
||||
<File RelativePath="..\..\..\gdk\win32\gdkgeometry-win32.c" />
|
||||
<File RelativePath="..\..\..\gdk\win32\gdkglobals-win32.c" />
|
||||
<File RelativePath="..\..\..\gdk\win32\gdkim-win32.c" />
|
||||
<File RelativePath="..\..\..\gdk\win32\gdkimage-win32.c" />
|
||||
<File RelativePath="..\..\..\gdk\win32\gdkinput-win32.c" />
|
||||
<File RelativePath="..\..\..\gdk\win32\gdkinput.c" />
|
||||
<File RelativePath="..\..\..\gdk\win32\gdkkeys-win32.c" />
|
||||
|
||||
@@ -108,7 +108,6 @@ copy ..\..\..\gdk\gdkevents.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk
&#
|
||||
copy ..\..\..\gdk\gdkfont.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk

|
||||
copy ..\..\..\gdk\gdkgc.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk

|
||||
copy ..\..\..\gdk\gdki18n.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk

|
||||
copy ..\..\..\gdk\gdkimage.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk

|
||||
copy ..\..\..\gdk\gdkinput.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk

|
||||
copy ..\..\..\gdk\gdkkeys.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk

|
||||
copy ..\..\..\gdk\gdkkeysyms.h $(OutDir)\include\gtk-$(GtkApiVersion)\gdk

|
||||
|
||||
+39
-34
@@ -12,7 +12,7 @@ AC_PREREQ([2.62])
|
||||
|
||||
m4_define([gtk_major_version], [2])
|
||||
m4_define([gtk_minor_version], [90])
|
||||
m4_define([gtk_micro_version], [4])
|
||||
m4_define([gtk_micro_version], [7])
|
||||
m4_define([gtk_interface_age], [0])
|
||||
m4_define([gtk_binary_age],
|
||||
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
|
||||
@@ -31,10 +31,10 @@ m4_define([gtk_api_version], [3.0])
|
||||
m4_define([gtk_binary_version], [3.0.0])
|
||||
|
||||
# required versions of other packages
|
||||
m4_define([glib_required_version], [2.25.9])
|
||||
m4_define([glib_required_version], [2.25.15])
|
||||
m4_define([pango_required_version], [1.20])
|
||||
m4_define([atk_required_version], [1.29.2])
|
||||
m4_define([cairo_required_version], [1.6])
|
||||
m4_define([cairo_required_version], [1.9.10])
|
||||
m4_define([gdk_pixbuf_required_version], [2.21.0])
|
||||
|
||||
|
||||
@@ -257,13 +257,13 @@ else
|
||||
gdktarget=x11
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(gdktarget, [ --with-gdktarget=[[x11/win32/quartz/directfb]] select non-default GDK target],
|
||||
AC_ARG_WITH(gdktarget, [ --with-gdktarget=[[x11/win32/quartz]] select non-default GDK target],
|
||||
gdktarget=$with_gdktarget)
|
||||
|
||||
AC_SUBST(gdktarget)
|
||||
case $gdktarget in
|
||||
x11|win32|quartz|directfb) ;;
|
||||
*) AC_MSG_ERROR([Invalid target for GDK: use x11, quartz, directfb or win32.]);;
|
||||
x11|win32|quartz) ;;
|
||||
*) AC_MSG_ERROR([Invalid target for GDK: use x11, quartz or win32.]);;
|
||||
esac
|
||||
|
||||
gdktargetlib=libgdk-$gdktarget-$GTK_API_VERSION.la
|
||||
@@ -740,6 +740,8 @@ AC_MSG_RESULT($gtk_uxtheme_h)
|
||||
AC_CHECK_HEADERS(crt_externs.h)
|
||||
AC_CHECK_FUNCS(_NSGetEnviron)
|
||||
|
||||
AC_MSG_CHECKING(whether to build dynamic modules)
|
||||
|
||||
AC_ARG_ENABLE(modules,
|
||||
[AC_HELP_STRING([--disable-modules],
|
||||
[disable dynamic module loading])])
|
||||
@@ -940,11 +942,11 @@ if test "x$gdktarget" = "xx11"; then
|
||||
#
|
||||
# Check for basic X packages; we use pkg-config if available
|
||||
#
|
||||
if $PKG_CONFIG --exists x11 xext xrender; then
|
||||
if $PKG_CONFIG --exists x11 xext; then
|
||||
have_base_x_pc=true
|
||||
X_PACKAGES="$X_PACKAGES x11 xext xrender"
|
||||
x_libs="`$PKG_CONFIG --libs x11 xext xrender`"
|
||||
X_CFLAGS="`$PKG_CONFIG --cflags x11 xext xrender`"
|
||||
X_PACKAGES="$X_PACKAGES x11 xext"
|
||||
x_libs="`$PKG_CONFIG --libs x11 xext`"
|
||||
X_CFLAGS="`$PKG_CONFIG --cflags x11 xext`"
|
||||
|
||||
# Strip out any .la files that pkg-config might give us (this happens
|
||||
# with -uninstalled.pc files)
|
||||
@@ -965,9 +967,9 @@ if test "x$gdktarget" = "xx11"; then
|
||||
fi
|
||||
|
||||
x_cflags="$X_CFLAGS"
|
||||
x_libs_for_checks="$X_LIBS -lXext -lXrender -lX11 $X_EXTRA_LIBS"
|
||||
x_libs_for_checks="$X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
|
||||
|
||||
GTK_DEP_LIBS_FOR_X="$X_LIBS -lXrender -lX11 $X_EXTRA_LIBS"
|
||||
GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
|
||||
fi
|
||||
|
||||
# Extra libraries found during checks (-lXinerama, etc), not from pkg-config.
|
||||
@@ -986,8 +988,6 @@ if test "x$gdktarget" = "xx11"; then
|
||||
AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.]))
|
||||
AC_CHECK_FUNC(XextFindDisplay, :,
|
||||
AC_MSG_ERROR([*** libXext not found. Check 'config.log' for more details.]))
|
||||
AC_CHECK_FUNC(XRenderQueryExtension, :,
|
||||
AC_MSG_ERROR([*** libXrender not found. Check 'config.log' for more details.]))
|
||||
|
||||
# Check for xReply
|
||||
|
||||
@@ -1248,17 +1248,6 @@ else
|
||||
AM_CONDITIONAL(USE_QUARTZ, false)
|
||||
fi
|
||||
|
||||
if test "x$gdktarget" = "xdirectfb"; then
|
||||
DIRECTFB_REQUIRED_VERSION=1.0.0
|
||||
AC_MSG_CHECKING(for DirectFB)
|
||||
|
||||
PKG_CHECK_MODULES(DIRECTFB, [directfb >= $DIRECTFB_REQUIRED_VERSION])
|
||||
AM_CONDITIONAL(USE_DIRECTFB, true)
|
||||
else
|
||||
AM_CONDITIONAL(USE_DIRECTFB, false)
|
||||
fi
|
||||
|
||||
|
||||
# Check for Pango flags
|
||||
|
||||
if test "x$gdktarget" = "xwin32"; then
|
||||
@@ -1300,7 +1289,7 @@ LDFLAGS="$saved_ldflags"
|
||||
if test "x$gdktarget" = "xx11"; then
|
||||
GDK_PACKAGES="$PANGO_PACKAGES gio-unix-2.0 $X_PACKAGES gdk-pixbuf-2.0 cairo-$cairo_backend"
|
||||
else
|
||||
GDK_PACKAGES="$PANGO_PACKAGES $X_PACKAGES gdk-pixbuf-2.0 cairo-$cairo_backend"
|
||||
GDK_PACKAGES="$PANGO_PACKAGES gio-2.0 gdk-pixbuf-2.0 cairo-$cairo_backend"
|
||||
fi
|
||||
|
||||
GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES`"
|
||||
@@ -1310,7 +1299,7 @@ GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFL
|
||||
# into the pkg-config files
|
||||
#
|
||||
if test $enable_explicit_deps != yes ; then
|
||||
GDK_PACKAGES="$PANGO_PACKAGES"
|
||||
GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0"
|
||||
GDK_EXTRA_LIBS=
|
||||
fi
|
||||
|
||||
@@ -1554,7 +1543,7 @@ fi
|
||||
# GObject introspection
|
||||
##################################################
|
||||
|
||||
GOBJECT_INTROSPECTION_CHECK([0.6.14])
|
||||
GOBJECT_INTROSPECTION_CHECK([0.9.0])
|
||||
|
||||
##################################################
|
||||
# Checks for gtk-doc and docbook-tools
|
||||
@@ -1652,9 +1641,6 @@ elif test "x$gdktarget" = "xwin32" ; then
|
||||
elif test "x$gdktarget" = "xquartz" ; then
|
||||
gdk_windowing='
|
||||
#define GDK_WINDOWING_QUARTZ'
|
||||
elif test "x$gdktarget" = "xdirectfb" ; then
|
||||
gdk_windowing='
|
||||
#define GDK_WINDOWING_DIRECTFB'
|
||||
fi
|
||||
|
||||
if test x$gdk_wchar_h = xyes; then
|
||||
@@ -1669,10 +1655,30 @@ if test x$gdk_working_wctype = xno; then
|
||||
gdk_wc="\$gdk_wc
|
||||
#define GDK_HAVE_BROKEN_WCTYPE 1"
|
||||
fi
|
||||
|
||||
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl Check for -Bsymbolic-functions linker flag used to avoid
|
||||
dnl intra-library PLT jumps, if available.
|
||||
dnl
|
||||
AC_ARG_ENABLE(Bsymbolic,
|
||||
[AC_HELP_STRING([--disable-Bsymbolic],
|
||||
[avoid linking with -Bsymbolic])],,
|
||||
[SAVED_LDFLAGS="${LDFLAGS}"
|
||||
AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
|
||||
LDFLAGS=-Wl,-Bsymbolic-functions
|
||||
AC_TRY_LINK([], [int main (void) { return 0; }],
|
||||
AC_MSG_RESULT(yes)
|
||||
enable_Bsymbolic=yes,
|
||||
AC_MSG_RESULT(no)
|
||||
enable_Bsymbolic=no)
|
||||
LDFLAGS="${SAVED_LDFLAGS}"])
|
||||
|
||||
if test "x${enable_Bsymbolic}" == "xyes"; then
|
||||
GTK_LINK_FLAGS=-Wl,-Bsymbolic-functions
|
||||
fi
|
||||
AC_SUBST(GTK_LINK_FLAGS)
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
config.h.win32
|
||||
gtk-zip.sh
|
||||
@@ -1710,7 +1716,6 @@ gdk/win32/Makefile
|
||||
gdk/win32/rc/Makefile
|
||||
gdk/win32/rc/gdk.rc
|
||||
gdk/quartz/Makefile
|
||||
gdk/directfb/Makefile
|
||||
gdk/tests/Makefile
|
||||
gtk/Makefile
|
||||
gtk/makefile.msc
|
||||
|
||||
@@ -22,42 +22,24 @@ LDADDS = \
|
||||
$(MATH_LIB)
|
||||
|
||||
noinst_PROGRAMS = \
|
||||
testpixbuf-drawable \
|
||||
testanimation \
|
||||
testpixbuf-color \
|
||||
testpixbuf-save \
|
||||
testpixbuf-scale \
|
||||
pixbuf-demo
|
||||
|
||||
# Need to build test-inline-pixbufs.h for testpixbuf
|
||||
noinst_PROGRAMS += testpixbuf
|
||||
BUILT_SOURCES = test-inline-pixbufs.h
|
||||
|
||||
test-inline-pixbufs.h: apple-red.png gnome-foot.png
|
||||
$(GDK_PIXBUF_CSOURCE) --raw --build-list \
|
||||
apple_red $(srcdir)/apple-red.png \
|
||||
gnome_foot $(srcdir)/gnome-foot.png \
|
||||
> test-inline-pixbufs.h \
|
||||
|| (rm -f test-inline-pixbufs.h && false)
|
||||
|
||||
testpixbuf_DEPENDENCIES = $(DEPS)
|
||||
testpixbuf_drawable_DEPENDENCIES = $(DEPS)
|
||||
testpixbuf_save_DEPENDENCIES = $(DEPS)
|
||||
testpixbuf_color_DEPENDENCIES = $(DEPS)
|
||||
testpixbuf_scale_DEPENDENCIES = $(DEPS)
|
||||
testanimation_DEPENDENCIES = $(DEPS)
|
||||
pixbuf_demo_DEPENDENCIES = $(DEPS)
|
||||
|
||||
testpixbuf_LDADD = $(LDADDS)
|
||||
testpixbuf_drawable_LDADD = $(LDADDS)
|
||||
testpixbuf_save_LDADD = $(LDADDS)
|
||||
testpixbuf_color_LDADD = $(LDADDS)
|
||||
testpixbuf_scale_LDADD = $(LDADDS)
|
||||
testanimation_LDADD = $(LDADDS)
|
||||
pixbuf_demo_LDADD = $(LDADDS)
|
||||
|
||||
testpixbuf_SOURCES = testpixbuf.c pixbuf-init.c
|
||||
testpixbuf_drawable_SOURCES = testpixbuf-drawable.c pixbuf-init.c
|
||||
testpixbuf_save_SOURCES = testpixbuf-save.c
|
||||
testpixbuf_color_SOURCES = testpixbuf-color.c
|
||||
testpixbuf_scale_SOURCES = testpixbuf-scale.c pixbuf-init.c
|
||||
@@ -75,6 +57,4 @@ EXTRA_DIST += \
|
||||
gnome-gsame.png \
|
||||
gnu-keys.png
|
||||
|
||||
DISTCLEANFILES = test-inline-pixbufs.h
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
||||
@@ -109,22 +109,6 @@ about_cb (GtkAction *action,
|
||||
NULL
|
||||
};
|
||||
|
||||
const gchar *license =
|
||||
"This library is free software; you can redistribute it and/or\n"
|
||||
"modify it under the terms of the GNU Library General Public License as\n"
|
||||
"published by the Free Software Foundation; either version 2 of the\n"
|
||||
"License, or (at your option) any later version.\n"
|
||||
"\n"
|
||||
"This library is distributed in the hope that it will be useful,\n"
|
||||
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
||||
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
|
||||
"Library General Public License for more details.\n"
|
||||
"\n"
|
||||
"You should have received a copy of the GNU Library General Public\n"
|
||||
"License along with the Gnome Library; see the file COPYING.LIB. If not,\n"
|
||||
"write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
|
||||
"Boston, MA 02111-1307, USA.\n";
|
||||
|
||||
pixbuf = NULL;
|
||||
transparent = NULL;
|
||||
filename = demo_find_file ("gtk-logo-rgb.gif", NULL);
|
||||
@@ -142,7 +126,7 @@ about_cb (GtkAction *action,
|
||||
"program-name", "GTK+ Code Demos",
|
||||
"version", PACKAGE_VERSION,
|
||||
"copyright", "(C) 1997-2009 The GTK+ Team",
|
||||
"license", license,
|
||||
"license-type", GTK_LICENSE_LGPL_2_1,
|
||||
"website", "http://www.gtk.org",
|
||||
"comments", "Program to demonstrate GTK+ functions.",
|
||||
"authors", authors,
|
||||
@@ -459,7 +443,7 @@ do_appwindow (GtkWidget *do_widget)
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Application Window");
|
||||
gtk_window_set_icon_name (GTK_WINDOW (window), "gtk-open");
|
||||
gtk_window_set_icon_name (GTK_WINDOW (window), "document-open");
|
||||
|
||||
/* NULL window variable when window is closed */
|
||||
g_signal_connect (window, "destroy",
|
||||
|
||||
@@ -128,7 +128,7 @@ query_for_toplevel (GdkScreen *screen,
|
||||
gtk_widget_show_all (popup);
|
||||
cursor = gdk_cursor_new_for_display (display, GDK_CROSSHAIR);
|
||||
|
||||
if (gdk_pointer_grab (popup->window, FALSE,
|
||||
if (gdk_pointer_grab (gtk_widget_get_window (popup), FALSE,
|
||||
GDK_BUTTON_RELEASE_MASK,
|
||||
NULL,
|
||||
cursor,
|
||||
@@ -229,6 +229,7 @@ static void
|
||||
open_display_cb (GtkWidget *button,
|
||||
ChangeDisplayInfo *info)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *display_entry;
|
||||
GtkWidget *dialog_label;
|
||||
@@ -248,11 +249,13 @@ open_display_cb (GtkWidget *button,
|
||||
dialog_label =
|
||||
gtk_label_new ("Please enter the name of\nthe new display\n");
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), dialog_label);
|
||||
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), display_entry);
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (content_area), dialog_label);
|
||||
gtk_container_add (GTK_CONTAINER (content_area), display_entry);
|
||||
|
||||
gtk_widget_grab_focus (display_entry);
|
||||
gtk_widget_show_all (GTK_BIN (dialog)->child);
|
||||
gtk_widget_show_all (gtk_bin_get_child (GTK_BIN (dialog)));
|
||||
|
||||
while (!result)
|
||||
{
|
||||
@@ -599,6 +602,7 @@ do_changedisplay (GtkWidget *do_widget)
|
||||
|
||||
if (!info)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *frame;
|
||||
|
||||
@@ -618,11 +622,11 @@ do_changedisplay (GtkWidget *do_widget)
|
||||
g_signal_connect (info->window, "destroy",
|
||||
G_CALLBACK (destroy_cb), &info);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (info->window));
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 5);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (info->window)->vbox), vbox,
|
||||
TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
|
||||
|
||||
frame = create_display_frame (info);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
@@ -19,17 +19,23 @@ expose_event_callback (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
gpointer data)
|
||||
{
|
||||
if (widget->window)
|
||||
GdkWindow *window;
|
||||
|
||||
window = gtk_widget_get_window (widget);
|
||||
if (window)
|
||||
{
|
||||
GtkStyle *style;
|
||||
cairo_t *cr;
|
||||
|
||||
style = gtk_widget_get_style (widget);
|
||||
|
||||
gdk_draw_rectangle (widget->window,
|
||||
style->bg_gc[GTK_STATE_NORMAL],
|
||||
TRUE,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width, event->area.height);
|
||||
cr = gdk_cairo_create (window);
|
||||
|
||||
gdk_cairo_set_source_color (cr, &style->bg[GTK_STATE_NORMAL]);
|
||||
gdk_cairo_rectangle (cr, &event->area);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@@ -41,13 +47,15 @@ change_color_callback (GtkWidget *button,
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkColorSelection *colorsel;
|
||||
GtkColorSelectionDialog *selection_dialog;
|
||||
gint response;
|
||||
|
||||
dialog = gtk_color_selection_dialog_new ("Changing color");
|
||||
|
||||
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
|
||||
|
||||
colorsel = GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dialog)->colorsel);
|
||||
|
||||
selection_dialog = GTK_COLOR_SELECTION_DIALOG (dialog);
|
||||
colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (selection_dialog));
|
||||
|
||||
gtk_color_selection_set_previous_color (colorsel, &color);
|
||||
gtk_color_selection_set_current_color (colorsel, &color);
|
||||
|
||||
@@ -435,7 +435,7 @@ do_combobox (GtkWidget *do_widget)
|
||||
entry = g_object_new (TYPE_MASK_ENTRY, NULL);
|
||||
MASK_ENTRY (entry)->mask = "^([0-9]*|One|Two|2\302\275|Three)$";
|
||||
|
||||
gtk_container_remove (GTK_CONTAINER (combo), GTK_BIN (combo)->child);
|
||||
gtk_container_remove (GTK_CONTAINER (combo), gtk_bin_get_child (GTK_BIN (combo)));
|
||||
gtk_container_add (GTK_CONTAINER (combo), entry);
|
||||
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ static void
|
||||
interactive_dialog_clicked (GtkButton *button,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *stock;
|
||||
@@ -51,9 +52,11 @@ interactive_dialog_clicked (GtkButton *button,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
NULL);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 8);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), hbox, FALSE, FALSE, 0);
|
||||
|
||||
stock = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), stock, FALSE, FALSE, 0);
|
||||
|
||||
@@ -17,52 +17,53 @@
|
||||
|
||||
static GtkWidget *window = NULL;
|
||||
/* Pixmap for scribble area, to store current scribbles */
|
||||
static GdkPixmap *pixmap = NULL;
|
||||
static cairo_surface_t *surface = NULL;
|
||||
|
||||
/* Create a new pixmap of the appropriate size to store our scribbles */
|
||||
/* Create a new surface of the appropriate size to store our scribbles */
|
||||
static gboolean
|
||||
scribble_configure_event (GtkWidget *widget,
|
||||
GdkEventConfigure *event,
|
||||
gpointer data)
|
||||
{
|
||||
if (pixmap)
|
||||
g_object_unref (pixmap);
|
||||
GtkAllocation allocation;
|
||||
cairo_t *cr;
|
||||
|
||||
pixmap = gdk_pixmap_new (widget->window,
|
||||
widget->allocation.width,
|
||||
widget->allocation.height,
|
||||
-1);
|
||||
if (surface)
|
||||
cairo_surface_destroy (surface);
|
||||
|
||||
/* Initialize the pixmap to white */
|
||||
gdk_draw_rectangle (pixmap,
|
||||
widget->style->white_gc,
|
||||
TRUE,
|
||||
0, 0,
|
||||
widget->allocation.width,
|
||||
widget->allocation.height);
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
surface = gdk_window_create_similar_surface (gtk_widget_get_window (widget),
|
||||
CAIRO_CONTENT_COLOR,
|
||||
allocation.width,
|
||||
allocation.height);
|
||||
|
||||
/* Initialize the surface to white */
|
||||
cr = cairo_create (surface);
|
||||
|
||||
cairo_set_source_rgb (cr, 1, 1, 1);
|
||||
cairo_paint (cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
|
||||
/* We've handled the configure event, no need for further processing. */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Redraw the screen from the pixmap */
|
||||
/* Redraw the screen from the surface */
|
||||
static gboolean
|
||||
scribble_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
gpointer data)
|
||||
{
|
||||
/* We use the "foreground GC" for the widget since it already exists,
|
||||
* but honestly any GC would work. The only thing to worry about
|
||||
* is whether the GC has an inappropriate clip region set.
|
||||
*/
|
||||
cairo_t *cr;
|
||||
|
||||
gdk_draw_drawable (widget->window,
|
||||
widget->style->fg_gc[gtk_widget_get_state (widget)],
|
||||
pixmap,
|
||||
/* Only copy the area that was exposed. */
|
||||
event->area.x, event->area.y,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width, event->area.height);
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (widget));
|
||||
|
||||
cairo_set_source_surface (cr, surface, 0, 0);
|
||||
gdk_cairo_rectangle (cr, &event->area);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -74,21 +75,23 @@ draw_brush (GtkWidget *widget,
|
||||
gdouble y)
|
||||
{
|
||||
GdkRectangle update_rect;
|
||||
cairo_t *cr;
|
||||
|
||||
update_rect.x = x - 3;
|
||||
update_rect.y = y - 3;
|
||||
update_rect.width = 6;
|
||||
update_rect.height = 6;
|
||||
|
||||
/* Paint to the pixmap, where we store our state */
|
||||
gdk_draw_rectangle (pixmap,
|
||||
widget->style->black_gc,
|
||||
TRUE,
|
||||
update_rect.x, update_rect.y,
|
||||
update_rect.width, update_rect.height);
|
||||
/* Paint to the surface, where we store our state */
|
||||
cr = cairo_create (surface);
|
||||
|
||||
gdk_cairo_rectangle (cr, &update_rect);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
|
||||
/* Now invalidate the affected region of the drawing area. */
|
||||
gdk_window_invalidate_rect (widget->window,
|
||||
gdk_window_invalidate_rect (gtk_widget_get_window (widget),
|
||||
&update_rect,
|
||||
FALSE);
|
||||
}
|
||||
@@ -98,7 +101,7 @@ scribble_button_press_event (GtkWidget *widget,
|
||||
GdkEventButton *event,
|
||||
gpointer data)
|
||||
{
|
||||
if (pixmap == NULL)
|
||||
if (surface == NULL)
|
||||
return FALSE; /* paranoia check, in case we haven't gotten a configure event */
|
||||
|
||||
if (event->button == 1)
|
||||
@@ -116,7 +119,7 @@ scribble_motion_notify_event (GtkWidget *widget,
|
||||
int x, y;
|
||||
GdkModifierType state;
|
||||
|
||||
if (pixmap == NULL)
|
||||
if (surface == NULL)
|
||||
return FALSE; /* paranoia check, in case we haven't gotten a configure event */
|
||||
|
||||
/* This call is very important; it requests the next motion event.
|
||||
@@ -145,9 +148,9 @@ checkerboard_expose (GtkWidget *da,
|
||||
GdkEventExpose *event,
|
||||
gpointer data)
|
||||
{
|
||||
GtkAllocation allocation;
|
||||
gint i, j, xcount, ycount;
|
||||
GdkGC *gc1, *gc2;
|
||||
GdkColor color;
|
||||
cairo_t *cr;
|
||||
|
||||
#define CHECK_SIZE 10
|
||||
#define SPACING 2
|
||||
@@ -159,47 +162,30 @@ checkerboard_expose (GtkWidget *da,
|
||||
* works.
|
||||
*/
|
||||
|
||||
/* It would be a bit more efficient to keep these
|
||||
* GC's around instead of recreating on each expose, but
|
||||
* this is the lazy/slow way.
|
||||
*/
|
||||
gc1 = gdk_gc_new (da->window);
|
||||
color.red = 30000;
|
||||
color.green = 0;
|
||||
color.blue = 30000;
|
||||
gdk_gc_set_rgb_fg_color (gc1, &color);
|
||||
|
||||
gc2 = gdk_gc_new (da->window);
|
||||
color.red = 65535;
|
||||
color.green = 65535;
|
||||
color.blue = 65535;
|
||||
gdk_gc_set_rgb_fg_color (gc2, &color);
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (da));
|
||||
gdk_cairo_rectangle (cr, &event->area);
|
||||
cairo_clip (cr);
|
||||
|
||||
gtk_widget_get_allocation (da, &allocation);
|
||||
xcount = 0;
|
||||
i = SPACING;
|
||||
while (i < da->allocation.width)
|
||||
while (i < allocation.width)
|
||||
{
|
||||
j = SPACING;
|
||||
ycount = xcount % 2; /* start with even/odd depending on row */
|
||||
while (j < da->allocation.height)
|
||||
while (j < allocation.height)
|
||||
{
|
||||
GdkGC *gc;
|
||||
|
||||
if (ycount % 2)
|
||||
gc = gc1;
|
||||
cairo_set_source_rgb (cr, 0.45777, 0, 0.45777);
|
||||
else
|
||||
gc = gc2;
|
||||
cairo_set_source_rgb (cr, 1, 1, 1);
|
||||
|
||||
/* If we're outside event->area, this will do nothing.
|
||||
* It might be mildly more efficient if we handled
|
||||
* the clipping ourselves, but again we're feeling lazy.
|
||||
*/
|
||||
gdk_draw_rectangle (da->window,
|
||||
gc,
|
||||
TRUE,
|
||||
i, j,
|
||||
CHECK_SIZE,
|
||||
CHECK_SIZE);
|
||||
cairo_rectangle (cr, i, j, CHECK_SIZE, CHECK_SIZE);
|
||||
cairo_fill (cr);
|
||||
|
||||
j += CHECK_SIZE + SPACING;
|
||||
++ycount;
|
||||
@@ -209,8 +195,7 @@ checkerboard_expose (GtkWidget *da,
|
||||
++xcount;
|
||||
}
|
||||
|
||||
g_object_unref (gc1);
|
||||
g_object_unref (gc2);
|
||||
cairo_destroy (cr);
|
||||
|
||||
/* return TRUE because we've handled this event, so no
|
||||
* further processing is required.
|
||||
@@ -223,9 +208,9 @@ close_window (void)
|
||||
{
|
||||
window = NULL;
|
||||
|
||||
if (pixmap)
|
||||
g_object_unref (pixmap);
|
||||
pixmap = NULL;
|
||||
if (surface)
|
||||
g_object_unref (surface);
|
||||
surface = NULL;
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
@@ -292,7 +277,7 @@ do_drawingarea (GtkWidget *do_widget)
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (frame), da);
|
||||
|
||||
/* Signals used to handle backing pixmap */
|
||||
/* Signals used to handle backing surface */
|
||||
|
||||
g_signal_connect (da, "expose-event",
|
||||
G_CALLBACK (scribble_expose_event), NULL);
|
||||
|
||||
@@ -11,6 +11,7 @@ static GtkWidget *window = NULL;
|
||||
GtkWidget *
|
||||
do_entry_buffer (GtkWidget *do_widget)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *entry;
|
||||
@@ -31,8 +32,10 @@ do_entry_buffer (GtkWidget *do_widget)
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
||||
label = gtk_label_new (NULL);
|
||||
|
||||
@@ -37,6 +37,7 @@ create_completion_model (void)
|
||||
GtkWidget *
|
||||
do_entry_completion (GtkWidget *do_widget)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *entry;
|
||||
@@ -58,8 +59,10 @@ do_entry_completion (GtkWidget *do_widget)
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
||||
label = gtk_label_new (NULL);
|
||||
|
||||
@@ -13,6 +13,7 @@ static GtkWidget *window = NULL;
|
||||
GtkWidget *
|
||||
do_expander (GtkWidget *do_widget)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *expander;
|
||||
@@ -32,8 +33,10 @@ do_expander (GtkWidget *do_widget)
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
||||
label = gtk_label_new ("Expander demo. Click on the triangle for details.");
|
||||
|
||||
@@ -225,7 +225,8 @@ motion_notify_event (GtkWidget *text_view,
|
||||
|
||||
set_cursor_if_appropriate (GTK_TEXT_VIEW (text_view), x, y);
|
||||
|
||||
gdk_window_get_pointer (text_view->window, NULL, NULL, NULL);
|
||||
gdk_window_get_pointer (gtk_widget_get_window (text_view),
|
||||
NULL, NULL, NULL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -237,9 +238,10 @@ visibility_notify_event (GtkWidget *text_view,
|
||||
GdkEventVisibility *event)
|
||||
{
|
||||
gint wx, wy, bx, by;
|
||||
|
||||
gdk_window_get_pointer (text_view->window, &wx, &wy, NULL);
|
||||
|
||||
|
||||
gdk_window_get_pointer (gtk_widget_get_window (text_view),
|
||||
&wx, &wy, NULL);
|
||||
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
GTK_TEXT_WINDOW_WIDGET,
|
||||
wx, wy, &bx, &by);
|
||||
|
||||
@@ -74,7 +74,7 @@ to_child (GtkRotatedBin *bin,
|
||||
|
||||
s = sin (bin->angle);
|
||||
c = cos (bin->angle);
|
||||
child_area = bin->child->allocation;
|
||||
gtk_widget_get_allocation (bin->child, &child_area);
|
||||
|
||||
w = c * child_area.width + s * child_area.height;
|
||||
h = s * child_area.width + c * child_area.height;
|
||||
@@ -114,7 +114,7 @@ to_parent (GtkRotatedBin *bin,
|
||||
|
||||
s = sin (bin->angle);
|
||||
c = cos (bin->angle);
|
||||
child_area = bin->child->allocation;
|
||||
gtk_widget_get_allocation (bin->child, &child_area);
|
||||
|
||||
w = c * child_area.width + s * child_area.height;
|
||||
h = s * child_area.width + c * child_area.height;
|
||||
@@ -188,7 +188,7 @@ pick_offscreen_child (GdkWindow *offscreen_window,
|
||||
{
|
||||
to_child (bin, widget_x, widget_y, &x, &y);
|
||||
|
||||
child_area = bin->child->allocation;
|
||||
gtk_widget_get_allocation (bin->child, &child_area);
|
||||
|
||||
if (x >= 0 && x < child_area.width &&
|
||||
y >= 0 && y < child_area.height)
|
||||
@@ -224,19 +224,23 @@ static void
|
||||
gtk_rotated_bin_realize (GtkWidget *widget)
|
||||
{
|
||||
GtkRotatedBin *bin = GTK_ROTATED_BIN (widget);
|
||||
GtkAllocation allocation;
|
||||
GtkStyle *style;
|
||||
GdkWindow *window;
|
||||
GdkWindowAttr attributes;
|
||||
gint attributes_mask;
|
||||
gint border_width;
|
||||
guint border_width;
|
||||
GtkRequisition child_requisition;
|
||||
|
||||
gtk_widget_set_realized (widget, TRUE);
|
||||
|
||||
border_width = GTK_CONTAINER (widget)->border_width;
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
|
||||
attributes.x = widget->allocation.x + border_width;
|
||||
attributes.y = widget->allocation.y + border_width;
|
||||
attributes.width = widget->allocation.width - 2 * border_width;
|
||||
attributes.height = widget->allocation.height - 2 * border_width;
|
||||
attributes.x = allocation.x + border_width;
|
||||
attributes.y = allocation.y + border_width;
|
||||
attributes.width = allocation.width - 2 * border_width;
|
||||
attributes.height = allocation.height - 2 * border_width;
|
||||
attributes.window_type = GDK_WINDOW_CHILD;
|
||||
attributes.event_mask = gtk_widget_get_events (widget)
|
||||
| GDK_EXPOSURE_MASK
|
||||
@@ -253,10 +257,11 @@ gtk_rotated_bin_realize (GtkWidget *widget)
|
||||
|
||||
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
|
||||
|
||||
widget->window = gdk_window_new (gtk_widget_get_parent_window (widget),
|
||||
&attributes, attributes_mask);
|
||||
gdk_window_set_user_data (widget->window, widget);
|
||||
g_signal_connect (widget->window, "pick-embedded-child",
|
||||
window = gdk_window_new (gtk_widget_get_parent_window (widget),
|
||||
&attributes, attributes_mask);
|
||||
gtk_widget_set_window (widget, window);
|
||||
gdk_window_set_user_data (window, widget);
|
||||
g_signal_connect (window, "pick-embedded-child",
|
||||
G_CALLBACK (pick_offscreen_child), bin);
|
||||
|
||||
attributes.window_type = GDK_WINDOW_OFFSCREEN;
|
||||
@@ -264,24 +269,27 @@ gtk_rotated_bin_realize (GtkWidget *widget)
|
||||
child_requisition.width = child_requisition.height = 0;
|
||||
if (bin->child && gtk_widget_get_visible (bin->child))
|
||||
{
|
||||
attributes.width = bin->child->allocation.width;
|
||||
attributes.height = bin->child->allocation.height;
|
||||
GtkAllocation child_allocation;
|
||||
|
||||
gtk_widget_get_allocation (bin->child, &child_allocation);
|
||||
attributes.width = child_allocation.width;
|
||||
attributes.height = child_allocation.height;
|
||||
}
|
||||
bin->offscreen_window = gdk_window_new (gtk_widget_get_root_window (widget),
|
||||
&attributes, attributes_mask);
|
||||
gdk_window_set_user_data (bin->offscreen_window, widget);
|
||||
if (bin->child)
|
||||
gtk_widget_set_parent_window (bin->child, bin->offscreen_window);
|
||||
gdk_offscreen_window_set_embedder (bin->offscreen_window, widget->window);
|
||||
gdk_offscreen_window_set_embedder (bin->offscreen_window, window);
|
||||
g_signal_connect (bin->offscreen_window, "to-embedder",
|
||||
G_CALLBACK (offscreen_window_to_parent), bin);
|
||||
g_signal_connect (bin->offscreen_window, "from-embedder",
|
||||
G_CALLBACK (offscreen_window_from_parent), bin);
|
||||
|
||||
widget->style = gtk_style_attach (widget->style, widget->window);
|
||||
|
||||
gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
|
||||
gtk_style_set_background (widget->style, bin->offscreen_window, GTK_STATE_NORMAL);
|
||||
gtk_widget_style_attach (widget);
|
||||
style = gtk_widget_get_style (widget);
|
||||
gtk_style_set_background (style, window, GTK_STATE_NORMAL);
|
||||
gtk_style_set_background (style, bin->offscreen_window, GTK_STATE_NORMAL);
|
||||
gdk_window_show (bin->offscreen_window);
|
||||
}
|
||||
|
||||
@@ -378,6 +386,7 @@ gtk_rotated_bin_size_request (GtkWidget *widget,
|
||||
GtkRequisition child_requisition;
|
||||
double s, c;
|
||||
double w, h;
|
||||
guint border_width;
|
||||
|
||||
child_requisition.width = 0;
|
||||
child_requisition.height = 0;
|
||||
@@ -390,8 +399,9 @@ gtk_rotated_bin_size_request (GtkWidget *widget,
|
||||
w = c * child_requisition.width + s * child_requisition.height;
|
||||
h = s * child_requisition.width + c * child_requisition.height;
|
||||
|
||||
requisition->width = GTK_CONTAINER (widget)->border_width * 2 + w;
|
||||
requisition->height = GTK_CONTAINER (widget)->border_width * 2 + h;
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
requisition->width = border_width * 2 + w;
|
||||
requisition->height = border_width * 2 + h;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -399,19 +409,19 @@ gtk_rotated_bin_size_allocate (GtkWidget *widget,
|
||||
GtkAllocation *allocation)
|
||||
{
|
||||
GtkRotatedBin *bin = GTK_ROTATED_BIN (widget);
|
||||
gint border_width;
|
||||
guint border_width;
|
||||
gint w, h;
|
||||
gdouble s, c;
|
||||
|
||||
widget->allocation = *allocation;
|
||||
gtk_widget_set_allocation (widget, allocation);
|
||||
|
||||
border_width = GTK_CONTAINER (widget)->border_width;
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
|
||||
w = allocation->width - border_width * 2;
|
||||
h = allocation->height - border_width * 2;
|
||||
|
||||
if (gtk_widget_get_realized (widget))
|
||||
gdk_window_move_resize (widget->window,
|
||||
gdk_window_move_resize (gtk_widget_get_window (widget),
|
||||
allocation->x + border_width,
|
||||
allocation->y + border_width,
|
||||
w, h);
|
||||
@@ -452,7 +462,8 @@ static gboolean
|
||||
gtk_rotated_bin_damage (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
gdk_window_invalidate_rect (widget->window, NULL, FALSE);
|
||||
gdk_window_invalidate_rect (gtk_widget_get_window (widget),
|
||||
NULL, FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -462,13 +473,15 @@ gtk_rotated_bin_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
GtkRotatedBin *bin = GTK_ROTATED_BIN (widget);
|
||||
GdkWindow *window;
|
||||
gint width, height;
|
||||
gdouble s, c;
|
||||
gdouble w, h;
|
||||
|
||||
if (gtk_widget_is_drawable (widget))
|
||||
{
|
||||
if (event->window == widget->window)
|
||||
window = gtk_widget_get_window (widget);
|
||||
if (event->window == window)
|
||||
{
|
||||
GdkPixmap *pixmap;
|
||||
GtkAllocation child_area;
|
||||
@@ -477,9 +490,9 @@ gtk_rotated_bin_expose (GtkWidget *widget,
|
||||
if (bin->child && gtk_widget_get_visible (bin->child))
|
||||
{
|
||||
pixmap = gdk_offscreen_window_get_pixmap (bin->offscreen_window);
|
||||
child_area = bin->child->allocation;
|
||||
gtk_widget_get_allocation (bin->child, &child_area);
|
||||
|
||||
cr = gdk_cairo_create (widget->window);
|
||||
cr = gdk_cairo_create (window);
|
||||
|
||||
/* transform */
|
||||
s = sin (bin->angle);
|
||||
@@ -505,7 +518,7 @@ gtk_rotated_bin_expose (GtkWidget *widget,
|
||||
}
|
||||
else if (event->window == bin->offscreen_window)
|
||||
{
|
||||
gtk_paint_flat_box (widget->style, event->window,
|
||||
gtk_paint_flat_box (gtk_widget_get_style (widget), event->window,
|
||||
GTK_STATE_NORMAL, GTK_SHADOW_NONE,
|
||||
&event->area, widget, "blah",
|
||||
0, 0, -1, -1);
|
||||
|
||||
@@ -126,7 +126,7 @@ pick_offscreen_child (GdkWindow *offscreen_window,
|
||||
{
|
||||
to_child (bin, widget_x, widget_y, &x, &y);
|
||||
|
||||
child_area = bin->child->allocation;
|
||||
gtk_widget_get_allocation (bin->child, &child_area);
|
||||
|
||||
if (x >= 0 && x < child_area.width &&
|
||||
y >= 0 && y < child_area.height)
|
||||
@@ -162,19 +162,23 @@ static void
|
||||
gtk_mirror_bin_realize (GtkWidget *widget)
|
||||
{
|
||||
GtkMirrorBin *bin = GTK_MIRROR_BIN (widget);
|
||||
GtkAllocation allocation;
|
||||
GtkStyle *style;
|
||||
GdkWindow *window;
|
||||
GdkWindowAttr attributes;
|
||||
gint attributes_mask;
|
||||
gint border_width;
|
||||
guint border_width;
|
||||
GtkRequisition child_requisition;
|
||||
|
||||
gtk_widget_set_realized (widget, TRUE);
|
||||
|
||||
border_width = GTK_CONTAINER (widget)->border_width;
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
|
||||
attributes.x = widget->allocation.x + border_width;
|
||||
attributes.y = widget->allocation.y + border_width;
|
||||
attributes.width = widget->allocation.width - 2 * border_width;
|
||||
attributes.height = widget->allocation.height - 2 * border_width;
|
||||
attributes.x = allocation.x + border_width;
|
||||
attributes.y = allocation.y + border_width;
|
||||
attributes.width = allocation.width - 2 * border_width;
|
||||
attributes.height = allocation.height - 2 * border_width;
|
||||
attributes.window_type = GDK_WINDOW_CHILD;
|
||||
attributes.event_mask = gtk_widget_get_events (widget)
|
||||
| GDK_EXPOSURE_MASK
|
||||
@@ -191,10 +195,11 @@ gtk_mirror_bin_realize (GtkWidget *widget)
|
||||
|
||||
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
|
||||
|
||||
widget->window = gdk_window_new (gtk_widget_get_parent_window (widget),
|
||||
&attributes, attributes_mask);
|
||||
gdk_window_set_user_data (widget->window, widget);
|
||||
g_signal_connect (widget->window, "pick-embedded-child",
|
||||
window = gdk_window_new (gtk_widget_get_parent_window (widget),
|
||||
&attributes, attributes_mask);
|
||||
gtk_widget_set_window (widget, window);
|
||||
gdk_window_set_user_data (window, widget);
|
||||
g_signal_connect (window, "pick-embedded-child",
|
||||
G_CALLBACK (pick_offscreen_child), bin);
|
||||
|
||||
attributes.window_type = GDK_WINDOW_OFFSCREEN;
|
||||
@@ -202,24 +207,27 @@ gtk_mirror_bin_realize (GtkWidget *widget)
|
||||
child_requisition.width = child_requisition.height = 0;
|
||||
if (bin->child && gtk_widget_get_visible (bin->child))
|
||||
{
|
||||
attributes.width = bin->child->allocation.width;
|
||||
attributes.height = bin->child->allocation.height;
|
||||
GtkAllocation child_allocation;
|
||||
|
||||
gtk_widget_get_allocation (bin->child, &child_allocation);
|
||||
attributes.width = child_allocation.width;
|
||||
attributes.height = child_allocation.height;
|
||||
}
|
||||
bin->offscreen_window = gdk_window_new (gtk_widget_get_root_window (widget),
|
||||
&attributes, attributes_mask);
|
||||
gdk_window_set_user_data (bin->offscreen_window, widget);
|
||||
if (bin->child)
|
||||
gtk_widget_set_parent_window (bin->child, bin->offscreen_window);
|
||||
gdk_offscreen_window_set_embedder (bin->offscreen_window, widget->window);
|
||||
gdk_offscreen_window_set_embedder (bin->offscreen_window, window);
|
||||
g_signal_connect (bin->offscreen_window, "to-embedder",
|
||||
G_CALLBACK (offscreen_window_to_parent), bin);
|
||||
g_signal_connect (bin->offscreen_window, "from-embedder",
|
||||
G_CALLBACK (offscreen_window_from_parent), bin);
|
||||
|
||||
widget->style = gtk_style_attach (widget->style, widget->window);
|
||||
|
||||
gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
|
||||
gtk_style_set_background (widget->style, bin->offscreen_window, GTK_STATE_NORMAL);
|
||||
gtk_widget_style_attach (widget);
|
||||
style = gtk_widget_get_style (widget);
|
||||
gtk_style_set_background (style, window, GTK_STATE_NORMAL);
|
||||
gtk_style_set_background (style, bin->offscreen_window, GTK_STATE_NORMAL);
|
||||
gdk_window_show (bin->offscreen_window);
|
||||
}
|
||||
|
||||
@@ -302,6 +310,7 @@ gtk_mirror_bin_size_request (GtkWidget *widget,
|
||||
{
|
||||
GtkMirrorBin *bin = GTK_MIRROR_BIN (widget);
|
||||
GtkRequisition child_requisition;
|
||||
guint border_width;
|
||||
|
||||
child_requisition.width = 0;
|
||||
child_requisition.height = 0;
|
||||
@@ -309,8 +318,9 @@ gtk_mirror_bin_size_request (GtkWidget *widget,
|
||||
if (bin->child && gtk_widget_get_visible (bin->child))
|
||||
gtk_widget_size_request (bin->child, &child_requisition);
|
||||
|
||||
requisition->width = GTK_CONTAINER (widget)->border_width * 2 + child_requisition.width + 10;
|
||||
requisition->height = GTK_CONTAINER (widget)->border_width * 2 + child_requisition.height * 2 + 10;
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
requisition->width = border_width * 2 + child_requisition.width + 10;
|
||||
requisition->height = border_width * 2 + child_requisition.height * 2 + 10;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -318,17 +328,18 @@ gtk_mirror_bin_size_allocate (GtkWidget *widget,
|
||||
GtkAllocation *allocation)
|
||||
{
|
||||
GtkMirrorBin *bin = GTK_MIRROR_BIN (widget);
|
||||
gint border_width;
|
||||
gint w, h;
|
||||
widget->allocation = *allocation;
|
||||
guint border_width;
|
||||
|
||||
border_width = GTK_CONTAINER (widget)->border_width;
|
||||
gtk_widget_set_allocation (widget, allocation);
|
||||
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
|
||||
w = allocation->width - border_width * 2;
|
||||
h = allocation->height - border_width * 2;
|
||||
|
||||
if (gtk_widget_get_realized (widget))
|
||||
gdk_window_move_resize (widget->window,
|
||||
gdk_window_move_resize (gtk_widget_get_window (widget),
|
||||
allocation->x + border_width,
|
||||
allocation->y + border_width,
|
||||
w, h);
|
||||
@@ -357,7 +368,8 @@ static gboolean
|
||||
gtk_mirror_bin_damage (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
gdk_window_invalidate_rect (widget->window, NULL, FALSE);
|
||||
gdk_window_invalidate_rect (gtk_widget_get_window (widget),
|
||||
NULL, FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -367,11 +379,13 @@ gtk_mirror_bin_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
GtkMirrorBin *bin = GTK_MIRROR_BIN (widget);
|
||||
GdkWindow *window;
|
||||
gint width, height;
|
||||
|
||||
if (gtk_widget_is_drawable (widget))
|
||||
{
|
||||
if (event->window == widget->window)
|
||||
window = gtk_widget_get_window (widget);
|
||||
if (event->window == window)
|
||||
{
|
||||
GdkPixmap *pixmap;
|
||||
cairo_t *cr;
|
||||
@@ -383,7 +397,7 @@ gtk_mirror_bin_expose (GtkWidget *widget,
|
||||
pixmap = gdk_offscreen_window_get_pixmap (bin->offscreen_window);
|
||||
gdk_drawable_get_size (pixmap, &width, &height);
|
||||
|
||||
cr = gdk_cairo_create (widget->window);
|
||||
cr = gdk_cairo_create (window);
|
||||
|
||||
cairo_save (cr);
|
||||
|
||||
@@ -423,7 +437,7 @@ gtk_mirror_bin_expose (GtkWidget *widget,
|
||||
}
|
||||
else if (event->window == bin->offscreen_window)
|
||||
{
|
||||
gtk_paint_flat_box (widget->style, event->window,
|
||||
gtk_paint_flat_box (gtk_widget_get_style (widget), event->window,
|
||||
GTK_STATE_NORMAL, GTK_SHADOW_NONE,
|
||||
&event->area, widget, "blah",
|
||||
0, 0, -1, -1);
|
||||
|
||||
+38
-18
@@ -17,15 +17,23 @@ void
|
||||
toggle_resize (GtkWidget *widget,
|
||||
GtkWidget *child)
|
||||
{
|
||||
GtkPaned *paned = GTK_PANED (child->parent);
|
||||
gboolean is_child1 = (child == paned->child1);
|
||||
GtkWidget *parent;
|
||||
GtkPaned *paned;
|
||||
gboolean is_child1;
|
||||
gboolean resize, shrink;
|
||||
|
||||
resize = is_child1 ? paned->child1_resize : paned->child2_resize;
|
||||
shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
|
||||
parent = gtk_widget_get_parent (child);
|
||||
paned = GTK_PANED (parent);
|
||||
|
||||
is_child1 = (child == gtk_paned_get_child1 (paned));
|
||||
|
||||
gtk_container_child_get (GTK_CONTAINER (paned), child,
|
||||
"resize", &resize,
|
||||
"shrink", &shrink,
|
||||
NULL);
|
||||
|
||||
g_object_ref (child);
|
||||
gtk_container_remove (GTK_CONTAINER (child->parent), child);
|
||||
gtk_container_remove (GTK_CONTAINER (parent), child);
|
||||
if (is_child1)
|
||||
gtk_paned_pack1 (paned, child, !resize, shrink);
|
||||
else
|
||||
@@ -37,15 +45,23 @@ void
|
||||
toggle_shrink (GtkWidget *widget,
|
||||
GtkWidget *child)
|
||||
{
|
||||
GtkPaned *paned = GTK_PANED (child->parent);
|
||||
gboolean is_child1 = (child == paned->child1);
|
||||
GtkWidget *parent;
|
||||
GtkPaned *paned;
|
||||
gboolean is_child1;
|
||||
gboolean resize, shrink;
|
||||
|
||||
resize = is_child1 ? paned->child1_resize : paned->child2_resize;
|
||||
shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
|
||||
parent = gtk_widget_get_parent (child);
|
||||
paned = GTK_PANED (parent);
|
||||
|
||||
is_child1 = (child == gtk_paned_get_child1 (paned));
|
||||
|
||||
gtk_container_child_get (GTK_CONTAINER (paned), child,
|
||||
"resize", &resize,
|
||||
"shrink", &shrink,
|
||||
NULL);
|
||||
|
||||
g_object_ref (child);
|
||||
gtk_container_remove (GTK_CONTAINER (child->parent), child);
|
||||
gtk_container_remove (GTK_CONTAINER (parent), child);
|
||||
if (is_child1)
|
||||
gtk_paned_pack1 (paned, child, resize, !shrink);
|
||||
else
|
||||
@@ -59,11 +75,15 @@ create_pane_options (GtkPaned *paned,
|
||||
const gchar *label1,
|
||||
const gchar *label2)
|
||||
{
|
||||
GtkWidget *child1, *child2;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *table;
|
||||
GtkWidget *label;
|
||||
GtkWidget *check_button;
|
||||
|
||||
|
||||
child1 = gtk_paned_get_child1 (paned);
|
||||
child2 = gtk_paned_get_child2 (paned);
|
||||
|
||||
frame = gtk_frame_new (frame_label);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (frame), 4);
|
||||
|
||||
@@ -78,16 +98,16 @@ create_pane_options (GtkPaned *paned,
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
0, 1, 1, 2);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_resize), paned->child1);
|
||||
|
||||
G_CALLBACK (toggle_resize), child1);
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
0, 1, 2, 3);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
|
||||
TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_shrink), paned->child1);
|
||||
|
||||
G_CALLBACK (toggle_shrink), child1);
|
||||
|
||||
label = gtk_label_new (label2);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label,
|
||||
1, 2, 0, 1);
|
||||
@@ -98,15 +118,15 @@ create_pane_options (GtkPaned *paned,
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
|
||||
TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_resize), paned->child2);
|
||||
|
||||
G_CALLBACK (toggle_resize), child2);
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
1, 2, 2, 3);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
|
||||
TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_shrink), paned->child2);
|
||||
G_CALLBACK (toggle_shrink), child2);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
@@ -100,20 +100,15 @@ expose_cb (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
gpointer data)
|
||||
{
|
||||
guchar *pixels;
|
||||
int rowstride;
|
||||
cairo_t *cr;
|
||||
|
||||
rowstride = gdk_pixbuf_get_rowstride (frame);
|
||||
cr = gdk_cairo_create (event->window);
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (frame) + rowstride * event->area.y + event->area.x * 3;
|
||||
gdk_cairo_set_source_pixbuf (cr, frame, 0, 0);
|
||||
gdk_cairo_rectangle (cr, &event->area);
|
||||
cairo_fill (cr);
|
||||
|
||||
gdk_draw_rgb_image_dithalign (widget->window,
|
||||
widget->style->black_gc,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width, event->area.height,
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
pixels, rowstride,
|
||||
event->area.x, event->area.y);
|
||||
cairo_destroy (cr);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -99,6 +99,8 @@ rotated_text_expose_event (GtkWidget *widget,
|
||||
#define N_WORDS 5
|
||||
#define FONT "Serif 18"
|
||||
|
||||
GtkAllocation allocation;
|
||||
|
||||
PangoContext *context;
|
||||
PangoLayout *layout;
|
||||
PangoFontDescription *desc;
|
||||
@@ -108,16 +110,20 @@ rotated_text_expose_event (GtkWidget *widget,
|
||||
|
||||
PangoAttrList *attrs;
|
||||
|
||||
int width = widget->allocation.width;
|
||||
int height = widget->allocation.height;
|
||||
int width;
|
||||
int height;
|
||||
double device_radius;
|
||||
int i;
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
width = allocation.width;
|
||||
height = allocation.height;
|
||||
|
||||
/* Create a cairo context and set up a transformation matrix so that the user
|
||||
* space coordinates for the centered square where we draw are [-RADIUS, RADIUS],
|
||||
* [-RADIUS, RADIUS].
|
||||
* We first center, then change the scale. */
|
||||
cr = gdk_cairo_create (widget->window);
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (widget));
|
||||
device_radius = MIN (width, height) / 2.;
|
||||
cairo_translate (cr,
|
||||
device_radius + (width - 2 * device_radius) / 2,
|
||||
|
||||
@@ -241,6 +241,7 @@ entry_populate_popup (GtkEntry *entry,
|
||||
GtkWidget *
|
||||
do_search_entry (GtkWidget *do_widget)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *label;
|
||||
@@ -263,8 +264,10 @@ do_search_entry (GtkWidget *do_widget)
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (search_entry_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
||||
label = gtk_label_new (NULL);
|
||||
|
||||
@@ -82,6 +82,7 @@ toggle_grouping (GtkToggleButton *check_button,
|
||||
GtkWidget *
|
||||
do_sizegroup (GtkWidget *do_widget)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *table;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *vbox;
|
||||
@@ -115,8 +116,10 @@ do_sizegroup (GtkWidget *do_widget)
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
||||
size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
|
||||
|
||||
@@ -27,6 +27,7 @@ on_stop_clicked (GtkButton *button, gpointer user_data)
|
||||
GtkWidget *
|
||||
do_spinner (GtkWidget *do_widget)
|
||||
{
|
||||
GtkWidget *content_area;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *button;
|
||||
@@ -47,8 +48,10 @@ do_spinner (GtkWidget *do_widget)
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
||||
/* Sensitive */
|
||||
|
||||
@@ -58,18 +58,10 @@ stock_item_info_copy (StockItemInfo *src)
|
||||
return info;
|
||||
}
|
||||
|
||||
static GType
|
||||
stock_item_info_get_type (void)
|
||||
{
|
||||
static GType our_type = 0;
|
||||
|
||||
if (our_type == 0)
|
||||
our_type = g_boxed_type_register_static ("StockItemInfo",
|
||||
(GBoxedCopyFunc) stock_item_info_copy,
|
||||
(GBoxedFreeFunc) stock_item_info_free);
|
||||
|
||||
return our_type;
|
||||
}
|
||||
static
|
||||
G_DEFINE_BOXED_TYPE (StockItemInfo, stock_item_info,
|
||||
stock_item_info_copy,
|
||||
stock_item_info_free)
|
||||
|
||||
typedef struct _StockItemDisplay StockItemDisplay;
|
||||
struct _StockItemDisplay
|
||||
|
||||
@@ -14,17 +14,9 @@
|
||||
|
||||
static void easter_egg_callback (GtkWidget *button, gpointer data);
|
||||
|
||||
#define gray50_width 2
|
||||
#define gray50_height 2
|
||||
static char gray50_bits[] = {
|
||||
0x02, 0x01
|
||||
};
|
||||
|
||||
static void
|
||||
create_tags (GtkTextBuffer *buffer)
|
||||
{
|
||||
GdkBitmap *stipple;
|
||||
|
||||
/* Create a bunch of tags. Note that it's also possible to
|
||||
* create tags with gtk_text_tag_new() then add them to the
|
||||
* tag table for the buffer, gtk_text_buffer_create_tag() is
|
||||
@@ -74,18 +66,6 @@ create_tags (GtkTextBuffer *buffer)
|
||||
gtk_text_buffer_create_tag (buffer, "red_background",
|
||||
"background", "red", NULL);
|
||||
|
||||
stipple = gdk_bitmap_create_from_data (NULL,
|
||||
gray50_bits, gray50_width,
|
||||
gray50_height);
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "background_stipple",
|
||||
"background_stipple", stipple, NULL);
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "foreground_stipple",
|
||||
"foreground_stipple", stipple, NULL);
|
||||
|
||||
g_object_unref (stipple);
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "big_gap_before_line",
|
||||
"pixels_above_lines", 30, NULL);
|
||||
|
||||
@@ -227,17 +207,9 @@ insert_text (GtkTextBuffer *buffer)
|
||||
"red_background", NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " or even ", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"a stippled red background", -1,
|
||||
"red_background",
|
||||
"background_stipple",
|
||||
NULL);
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter, " or ", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"a stippled blue foreground on solid red background", -1,
|
||||
"a blue foreground on red background", -1,
|
||||
"blue_foreground",
|
||||
"red_background",
|
||||
"foreground_stipple",
|
||||
NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " (select that to read it) can be used.\n\n", -1);
|
||||
|
||||
|
||||
@@ -84,15 +84,18 @@ static gboolean
|
||||
canvas_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
GtkAllocation allocation;
|
||||
cairo_t *cr;
|
||||
GList *iter;
|
||||
|
||||
cr = gdk_cairo_create (widget->window);
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (widget));
|
||||
gdk_cairo_region (cr, event->region);
|
||||
cairo_clip (cr);
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
|
||||
cairo_set_source_rgb (cr, 1, 1, 1);
|
||||
cairo_rectangle (cr, 0, 0, widget->allocation.width, widget->allocation.height);
|
||||
cairo_rectangle (cr, 0, 0, allocation.width, allocation.height);
|
||||
cairo_fill (cr);
|
||||
|
||||
for (iter = canvas_items; iter; iter = iter->next)
|
||||
@@ -173,6 +176,7 @@ palette_drag_data_received (GtkWidget *widget,
|
||||
guint time,
|
||||
gpointer data)
|
||||
{
|
||||
GtkAllocation allocation;
|
||||
GtkToolItemGroup *drop_group = NULL;
|
||||
GtkWidget *drag_palette = gtk_drag_get_source_widget (context);
|
||||
GtkWidget *drag_item = NULL;
|
||||
@@ -193,10 +197,13 @@ palette_drag_data_received (GtkWidget *widget,
|
||||
GTK_TOOL_ITEM_GROUP (drag_item),
|
||||
drop_group);
|
||||
else if (GTK_IS_TOOL_ITEM (drag_item) && drop_group)
|
||||
palette_drop_item (GTK_TOOL_ITEM (drag_item),
|
||||
drop_group,
|
||||
x - GTK_WIDGET (drop_group)->allocation.x,
|
||||
y - GTK_WIDGET (drop_group)->allocation.y);
|
||||
{
|
||||
gtk_widget_get_allocation (GTK_WIDGET (drop_group), &allocation);
|
||||
palette_drop_item (GTK_TOOL_ITEM (drag_item),
|
||||
drop_group,
|
||||
x - allocation.x,
|
||||
y - allocation.y);
|
||||
}
|
||||
}
|
||||
|
||||
/********************************/
|
||||
@@ -372,11 +379,13 @@ on_combo_orientation_changed (GtkComboBox *combo_box,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkToolPalette *palette = GTK_TOOL_PALETTE (user_data);
|
||||
GtkScrolledWindow *sw = GTK_SCROLLED_WINDOW (GTK_WIDGET (palette)->parent);
|
||||
GtkScrolledWindow *sw;
|
||||
GtkTreeModel *model = gtk_combo_box_get_model (combo_box);
|
||||
GtkTreeIter iter;
|
||||
gint val = 0;
|
||||
|
||||
sw = GTK_SCROLLED_WINDOW (gtk_widget_get_parent (GTK_WIDGET (palette)));
|
||||
|
||||
if (!gtk_combo_box_get_active_iter (combo_box, &iter))
|
||||
return;
|
||||
|
||||
|
||||
+7
-13
@@ -89,20 +89,14 @@ load_pixbufs (void)
|
||||
static gint
|
||||
expose_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
{
|
||||
guchar *pixels;
|
||||
int rowstride;
|
||||
cairo_t *cr;
|
||||
|
||||
cr = gdk_cairo_create (event->window);
|
||||
gdk_cairo_set_source_pixbuf (cr, frame, 0, 0);
|
||||
gdk_cairo_rectangle (cr, &event->area);
|
||||
cairo_fill (cr);
|
||||
|
||||
rowstride = gdk_pixbuf_get_rowstride (frame);
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (frame) + rowstride * event->area.y + event->area.x * 3;
|
||||
|
||||
gdk_draw_rgb_image_dithalign (widget->window,
|
||||
widget->style->black_gc,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width, event->area.height,
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
pixels, rowstride,
|
||||
event->area.x, event->area.y);
|
||||
cairo_destroy (cr);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -111,8 +111,6 @@ main (int argc, char **argv)
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
gtk_widget_set_default_colormap (gdk_rgb_get_colormap ());
|
||||
|
||||
root = gdk_get_default_root_window ();
|
||||
pixbuf = gdk_pixbuf_get_from_drawable (NULL, root, NULL,
|
||||
0, 0, 0, 0, 150, 160);
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
#include "config.h"
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
int
|
||||
close_app (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
gtk_main_quit ();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
expose_cb (GtkWidget *drawing_area, GdkEventExpose *evt, gpointer data)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
pixbuf = (GdkPixbuf *) g_object_get_data (G_OBJECT (drawing_area), "pixbuf");
|
||||
if (gdk_pixbuf_get_has_alpha (pixbuf))
|
||||
{
|
||||
gdk_draw_rgb_32_image (drawing_area->window,
|
||||
drawing_area->style->black_gc,
|
||||
evt->area.x, evt->area.y,
|
||||
evt->area.width,
|
||||
evt->area.height,
|
||||
GDK_RGB_DITHER_MAX,
|
||||
gdk_pixbuf_get_pixels (pixbuf) +
|
||||
(evt->area.y * gdk_pixbuf_get_rowstride (pixbuf)) +
|
||||
(evt->area.x * gdk_pixbuf_get_n_channels (pixbuf)),
|
||||
gdk_pixbuf_get_rowstride (pixbuf));
|
||||
}
|
||||
else
|
||||
{
|
||||
gdk_draw_rgb_image (drawing_area->window,
|
||||
drawing_area->style->black_gc,
|
||||
evt->area.x, evt->area.y,
|
||||
evt->area.width,
|
||||
evt->area.height,
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
gdk_pixbuf_get_pixels (pixbuf) +
|
||||
(evt->area.y * gdk_pixbuf_get_rowstride (pixbuf)) +
|
||||
(evt->area.x * gdk_pixbuf_get_n_channels (pixbuf)),
|
||||
gdk_pixbuf_get_rowstride (pixbuf));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int
|
||||
configure_cb (GtkWidget *drawing_area, GdkEventConfigure *evt, gpointer data)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
pixbuf = (GdkPixbuf *) g_object_get_data (G_OBJECT (drawing_area), "pixbuf");
|
||||
|
||||
g_print ("X:%d Y:%d\n", evt->width, evt->height);
|
||||
if (evt->width != gdk_pixbuf_get_width (pixbuf) || evt->height != gdk_pixbuf_get_height (pixbuf))
|
||||
{
|
||||
GdkWindow *root;
|
||||
GdkPixbuf *new_pixbuf;
|
||||
|
||||
root = gdk_get_default_root_window ();
|
||||
new_pixbuf = gdk_pixbuf_get_from_drawable (NULL, root, NULL,
|
||||
0, 0, 0, 0, evt->width, evt->height);
|
||||
g_object_set_data (G_OBJECT (drawing_area), "pixbuf", new_pixbuf);
|
||||
g_object_unref (pixbuf);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
extern void pixbuf_init (void);
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
GdkWindow *root;
|
||||
GtkWidget *window;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *drawing_area;
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
pixbuf_init ();
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
gdk_rgb_set_verbose (TRUE);
|
||||
|
||||
gtk_widget_set_default_colormap (gdk_rgb_get_colormap ());
|
||||
|
||||
root = gdk_get_default_root_window ();
|
||||
pixbuf = gdk_pixbuf_get_from_drawable (NULL, root, NULL,
|
||||
0, 0, 0, 0, 150, 160);
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
g_signal_connect (window, "delete_event",
|
||||
G_CALLBACK (close_app), NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (close_app), NULL);
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
drawing_area = gtk_drawing_area_new ();
|
||||
gtk_widget_set_size_request (GTK_WIDGET (drawing_area),
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
gdk_pixbuf_get_height (pixbuf));
|
||||
g_signal_connect (drawing_area, "expose_event",
|
||||
G_CALLBACK (expose_cb), NULL);
|
||||
|
||||
g_signal_connect (drawing_area, "configure_event",
|
||||
G_CALLBACK (configure_cb), NULL);
|
||||
g_object_set_data (G_OBJECT (drawing_area), "pixbuf", pixbuf);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
gtk_main ();
|
||||
return 0;
|
||||
}
|
||||
+9
-25
@@ -311,32 +311,18 @@ static int
|
||||
expose_cb (GtkWidget *drawing_area, GdkEventExpose *evt, gpointer data)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
cairo_t *cr;
|
||||
|
||||
pixbuf = (GdkPixbuf *) g_object_get_data (G_OBJECT (drawing_area),
|
||||
"pixbuf");
|
||||
if (gdk_pixbuf_get_has_alpha (pixbuf)) {
|
||||
gdk_draw_rgb_32_image (drawing_area->window,
|
||||
drawing_area->style->black_gc,
|
||||
evt->area.x, evt->area.y,
|
||||
evt->area.width,
|
||||
evt->area.height,
|
||||
GDK_RGB_DITHER_MAX,
|
||||
gdk_pixbuf_get_pixels (pixbuf) +
|
||||
(evt->area.y * gdk_pixbuf_get_rowstride (pixbuf)) +
|
||||
(evt->area.x * gdk_pixbuf_get_n_channels (pixbuf)),
|
||||
gdk_pixbuf_get_rowstride (pixbuf));
|
||||
} else {
|
||||
gdk_draw_rgb_image (drawing_area->window,
|
||||
drawing_area->style->black_gc,
|
||||
evt->area.x, evt->area.y,
|
||||
evt->area.width,
|
||||
evt->area.height,
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
gdk_pixbuf_get_pixels (pixbuf) +
|
||||
(evt->area.y * gdk_pixbuf_get_rowstride (pixbuf)) +
|
||||
(evt->area.x * gdk_pixbuf_get_n_channels (pixbuf)),
|
||||
gdk_pixbuf_get_rowstride (pixbuf));
|
||||
}
|
||||
|
||||
cr = gdk_cairo_create (evt->window);
|
||||
gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
|
||||
gdk_cairo_rectangle (cr, &evt->area);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -374,8 +360,6 @@ main (int argc, char **argv)
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
gtk_widget_set_default_colormap (gdk_rgb_get_colormap ());
|
||||
|
||||
root = gdk_get_default_root_window ();
|
||||
pixbuf = gdk_pixbuf_get_from_drawable (NULL, root, NULL,
|
||||
0, 0, 0, 0, 150, 160);
|
||||
|
||||
@@ -34,25 +34,31 @@ overall_changed_cb (GtkAdjustment *adjustment, gpointer data)
|
||||
gboolean
|
||||
expose_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
{
|
||||
GtkAllocation allocation;
|
||||
GdkPixbuf *dest;
|
||||
cairo_t *cr;
|
||||
|
||||
gdk_window_set_back_pixmap (gtk_widget_get_window (widget),
|
||||
NULL, FALSE);
|
||||
|
||||
gdk_window_set_back_pixmap (widget->window, NULL, FALSE);
|
||||
|
||||
dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, event->area.width, event->area.height);
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
gdk_pixbuf_composite_color (pixbuf, dest,
|
||||
0, 0, event->area.width, event->area.height,
|
||||
-event->area.x, -event->area.y,
|
||||
(double) widget->allocation.width / gdk_pixbuf_get_width (pixbuf),
|
||||
(double) widget->allocation.height / gdk_pixbuf_get_height (pixbuf),
|
||||
(double) allocation.width / gdk_pixbuf_get_width (pixbuf),
|
||||
(double) allocation.height / gdk_pixbuf_get_height (pixbuf),
|
||||
interp_type, overall_alpha,
|
||||
event->area.x, event->area.y, 16, 0xaaaaaa, 0x555555);
|
||||
|
||||
gdk_draw_pixbuf (widget->window, widget->style->fg_gc[GTK_STATE_NORMAL], dest,
|
||||
0, 0, event->area.x, event->area.y,
|
||||
event->area.width, event->area.height,
|
||||
GDK_RGB_DITHER_NORMAL, event->area.x, event->area.y);
|
||||
|
||||
cr = gdk_cairo_create (event->window);
|
||||
|
||||
gdk_cairo_set_source_pixbuf (cr, dest, 0, 0);
|
||||
gdk_cairo_rectangle (cr, &event->area);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
g_object_unref (dest);
|
||||
|
||||
return TRUE;
|
||||
|
||||
@@ -1,640 +0,0 @@
|
||||
/* testpixbuf -- test program for gdk-pixbuf code
|
||||
* Copyright (C) 1999 Mark Crichton, Larry Ewing
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser 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.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
|
||||
#include "test-inline-pixbufs.h"
|
||||
|
||||
typedef struct {
|
||||
FILE *imagefile;
|
||||
GdkPixbufLoader *loader;
|
||||
GtkWidget **rgbwin;
|
||||
guchar *buf;
|
||||
guint timeout;
|
||||
guint readlen;
|
||||
} ProgressFileStatus;
|
||||
|
||||
|
||||
#define DEFAULT_WIDTH 24
|
||||
#define DEFAULT_HEIGHT 24
|
||||
|
||||
static const unsigned char default_image[] = {
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xae, 0xb3, 0xb3, 0xc6, 0xc9, 0xcd, 0xd7, 0xd4, 0xdf,
|
||||
0xec, 0xde, 0xf3, 0xe7, 0xcb, 0xe9, 0xd9, 0xb5, 0xd3, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xb1, 0xb7, 0xa5,
|
||||
0xb0, 0xb8, 0xad, 0xb3, 0xb9, 0xb6, 0xc1, 0xc6, 0xc8, 0xd5, 0xd3, 0xdc,
|
||||
0xec, 0xde, 0xf3, 0xe5, 0xca, 0xe6, 0xe0, 0xbb, 0xd7, 0xe1, 0xad, 0xc2,
|
||||
0xe3, 0xac, 0xa3, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xca, 0xc1, 0xa4, 0xc5, 0xc7, 0xac,
|
||||
0xb7, 0xbe, 0xaf, 0xad, 0xb4, 0xaf, 0xbd, 0xc2, 0xc3, 0xd1, 0xd0, 0xd8,
|
||||
0xec, 0xde, 0xf3, 0xe5, 0xc7, 0xe4, 0xe0, 0xb6, 0xd1, 0xe7, 0xa9, 0xb4,
|
||||
0xed, 0xcd, 0xb6, 0xd6, 0xcf, 0xae, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0x00, 0x00, 0x00, 0xdf, 0xa7, 0x9f, 0xdd, 0xbf, 0xaa, 0xcf, 0xc5, 0xa9,
|
||||
0xc1, 0xc4, 0xac, 0xb2, 0xba, 0xaf, 0xb6, 0xbb, 0xbb, 0xcd, 0xce, 0xd4,
|
||||
0xec, 0xde, 0xf3, 0xe4, 0xc4, 0xe1, 0xe0, 0xaf, 0xc7, 0xea, 0xbc, 0xae,
|
||||
0xe1, 0xd6, 0xb6, 0xc7, 0xcc, 0xae, 0xa2, 0xab, 0x9a, 0x00, 0x00, 0x00,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0x00, 0x00, 0x00, 0xe3, 0xab, 0xc0, 0xe6, 0xa3, 0xa7, 0xdf, 0xba, 0xa8,
|
||||
0xcf, 0xc5, 0xa9, 0xbd, 0xc2, 0xae, 0xad, 0xb4, 0xaf, 0xc6, 0xc9, 0xcd,
|
||||
0xec, 0xde, 0xf3, 0xe2, 0xbf, 0xdc, 0xe7, 0xa9, 0xb4, 0xe7, 0xd6, 0xb8,
|
||||
0xc7, 0xcc, 0xae, 0xac, 0xb6, 0xa6, 0x9d, 0xa8, 0x9f, 0x00, 0x00, 0x00,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
|
||||
0xd9, 0xaf, 0xcf, 0xe1, 0xb4, 0xd2, 0xe2, 0xb0, 0xcb, 0xe4, 0xa9, 0xbb,
|
||||
0xe2, 0xb2, 0xa6, 0xcf, 0xc5, 0xa9, 0x6a, 0x6a, 0x6a, 0x0d, 0x0d, 0x0d,
|
||||
0x0d, 0x0d, 0x0d, 0x6a, 0x6a, 0x6a, 0xed, 0xcd, 0xb6, 0xc7, 0xcc, 0xae,
|
||||
0xa6, 0xb1, 0xa3, 0x98, 0xa2, 0x9c, 0x8f, 0x97, 0x96, 0x7e, 0x84, 0x85,
|
||||
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
|
||||
0xe8, 0xc6, 0xe7, 0xe5, 0xc2, 0xe3, 0xe3, 0xbd, 0xdd, 0xe1, 0xb6, 0xd5,
|
||||
0xe2, 0xb0, 0xcb, 0x6a, 0x6a, 0x6a, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x6a, 0x6a, 0x6a, 0x9d, 0xa8, 0x9f,
|
||||
0x8f, 0x97, 0x96, 0x8b, 0x90, 0x92, 0x97, 0x9e, 0xa2, 0xa0, 0xa7, 0xae,
|
||||
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
|
||||
0xe7, 0xd3, 0xed, 0xe8, 0xd1, 0xed, 0xe8, 0xce, 0xec, 0xe9, 0xcc, 0xeb,
|
||||
0xe8, 0xc6, 0xe7, 0x0d, 0x0d, 0x0d, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x0d, 0x0d, 0x0d, 0x97, 0x9e, 0xa2,
|
||||
0xa7, 0xae, 0xb7, 0xb2, 0xb6, 0xc5, 0xba, 0xbc, 0xce, 0xbf, 0xbe, 0xd3,
|
||||
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
|
||||
0xe9, 0xdf, 0xf0, 0xe9, 0xdf, 0xf0, 0xe9, 0xdf, 0xf0, 0xe9, 0xdf, 0xf0,
|
||||
0xe9, 0xdf, 0xf0, 0x0d, 0x0d, 0x0d, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x0d, 0x0d, 0x0d, 0xe1, 0xd2, 0xf7,
|
||||
0xe1, 0xd2, 0xf7, 0xe1, 0xd2, 0xf7, 0xe1, 0xd2, 0xf7, 0xe1, 0xd2, 0xf7,
|
||||
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
|
||||
0xca, 0xc7, 0xd2, 0xc5, 0xc4, 0xcd, 0xbf, 0xbf, 0xc7, 0xb8, 0xb9, 0xc0,
|
||||
0xae, 0xaf, 0xb6, 0x6a, 0x6a, 0x6a, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x6a, 0x6a, 0x6a, 0xd5, 0xa8, 0xe1,
|
||||
0xd8, 0xb2, 0xe9, 0xd9, 0xb8, 0xed, 0xdb, 0xbd, 0xf0, 0xdc, 0xbf, 0xf1,
|
||||
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
|
||||
0xa4, 0xa6, 0xac, 0xa8, 0xaa, 0xaf, 0xa0, 0xa6, 0xa8, 0x98, 0x9e, 0x9c,
|
||||
0xa1, 0xa8, 0x9e, 0xb1, 0xb6, 0xa1, 0x6a, 0x6a, 0x6a, 0x0d, 0x0d, 0x0d,
|
||||
0x0d, 0x0d, 0x0d, 0x6a, 0x6a, 0x6a, 0xc0, 0x8c, 0xad, 0xcc, 0x90, 0xb5,
|
||||
0xd3, 0x94, 0xca, 0xd6, 0xa2, 0xdb, 0xd5, 0xa8, 0xe1, 0xcf, 0xa7, 0xdf,
|
||||
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0x00, 0x00, 0x00, 0x98, 0x9f, 0x9b, 0xa1, 0xa8, 0x9e, 0xac, 0xb3, 0xa0,
|
||||
0xb9, 0xb9, 0xa4, 0xd0, 0xb8, 0xa8, 0xc5, 0xb5, 0xb8, 0xb6, 0xbb, 0xad,
|
||||
0xe3, 0xd7, 0xb5, 0xdd, 0xb4, 0xa9, 0xcb, 0x89, 0xac, 0xc0, 0x8c, 0xad,
|
||||
0xc8, 0x91, 0xb5, 0xd1, 0x8d, 0xb7, 0xd3, 0x94, 0xca, 0x00, 0x00, 0x00,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0x00, 0x00, 0x00, 0xa1, 0xa7, 0x98, 0xb1, 0xb6, 0xa1, 0xbd, 0xb9, 0xa5,
|
||||
0xd0, 0xb8, 0xa8, 0xca, 0xb5, 0xb7, 0xb8, 0xb1, 0xb1, 0xc2, 0xc8, 0xb2,
|
||||
0xe3, 0xd7, 0xb5, 0xe1, 0xbf, 0xaf, 0xdb, 0x92, 0x9a, 0xbe, 0x82, 0xa6,
|
||||
0xc0, 0x8c, 0xad, 0xc8, 0x91, 0xb4, 0xc7, 0x8b, 0xb0, 0x00, 0x00, 0x00,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xbc, 0xb6, 0xa1, 0xd0, 0xb8, 0xa8,
|
||||
0xcd, 0xb6, 0xb7, 0xc0, 0xb4, 0xb5, 0xb1, 0xb1, 0xaa, 0xca, 0xd1, 0xb4,
|
||||
0xe3, 0xd7, 0xb5, 0xe2, 0xc1, 0xb0, 0xdb, 0xa8, 0xa3, 0xd2, 0x8a, 0xa9,
|
||||
0xb7, 0x7e, 0xa2, 0xbd, 0x89, 0xa9, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xc9, 0xaf, 0xaf,
|
||||
0xc5, 0xb5, 0xb8, 0xb8, 0xb1, 0xb1, 0xb6, 0xbb, 0xad, 0xd0, 0xd6, 0xb5,
|
||||
0xe3, 0xd7, 0xb5, 0xe2, 0xbf, 0xaf, 0xdd, 0xb4, 0xa9, 0xdb, 0x92, 0x9a,
|
||||
0xc6, 0x84, 0xa7, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xac, 0xaa, 0xa6, 0xbd, 0xc3, 0xb0, 0xd2, 0xd7, 0xb5,
|
||||
0xe3, 0xd7, 0xb5, 0xe2, 0xbf, 0xae, 0xdb, 0xb6, 0xa8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
|
||||
0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff
|
||||
};
|
||||
|
||||
|
||||
static const char * book_open_xpm[] = {
|
||||
"16 16 4 1",
|
||||
" c None s None",
|
||||
". c black",
|
||||
"X c #808080",
|
||||
"o c white",
|
||||
" ",
|
||||
" .. ",
|
||||
" .Xo. ... ",
|
||||
" .Xoo. ..oo. ",
|
||||
" .Xooo.Xooo... ",
|
||||
" .Xooo.oooo.X. ",
|
||||
" .Xooo.Xooo.X. ",
|
||||
" .Xooo.oooo.X. ",
|
||||
" .Xooo.Xooo.X. ",
|
||||
" .Xooo.oooo.X. ",
|
||||
" .Xoo.Xoo..X. ",
|
||||
" .Xo.o..ooX. ",
|
||||
" .X..XXXXX. ",
|
||||
" ..X....... ",
|
||||
" .. ",
|
||||
" "};
|
||||
|
||||
static const char * book_closed_xpm[] = {
|
||||
"16 16 6 1",
|
||||
" c None s None",
|
||||
". c black",
|
||||
"X c red",
|
||||
"o c yellow",
|
||||
"O c #808080",
|
||||
"# c white",
|
||||
" ",
|
||||
" .. ",
|
||||
" ..XX. ",
|
||||
" ..XXXXX. ",
|
||||
" ..XXXXXXXX. ",
|
||||
".ooXXXXXXXXX. ",
|
||||
"..ooXXXXXXXXX. ",
|
||||
".X.ooXXXXXXXXX. ",
|
||||
".XX.ooXXXXXX.. ",
|
||||
" .XX.ooXXX..#O ",
|
||||
" .XX.oo..##OO. ",
|
||||
" .XX..##OO.. ",
|
||||
" .X.#OO.. ",
|
||||
" ..O.. ",
|
||||
" .. ",
|
||||
" "};
|
||||
|
||||
static const char * mini_page_xpm[] = {
|
||||
"16 16 4 1",
|
||||
" c None s None",
|
||||
". c black",
|
||||
"X c white",
|
||||
"o c #808080",
|
||||
" ",
|
||||
" ....... ",
|
||||
" .XXXXX.. ",
|
||||
" .XoooX.X. ",
|
||||
" .XXXXX.... ",
|
||||
" .XooooXoo.o ",
|
||||
" .XXXXXXXX.o ",
|
||||
" .XooooooX.o ",
|
||||
" .XXXXXXXX.o ",
|
||||
" .XooooooX.o ",
|
||||
" .XXXXXXXX.o ",
|
||||
" .XooooooX.o ",
|
||||
" .XXXXXXXX.o ",
|
||||
" ..........o ",
|
||||
" oooooooooo ",
|
||||
" "};
|
||||
|
||||
static const char * gtk_mini_xpm[] = {
|
||||
"15 20 17 1",
|
||||
" c None",
|
||||
". c #14121F",
|
||||
"+ c #278828",
|
||||
"@ c #9B3334",
|
||||
"# c #284C72",
|
||||
"$ c #24692A",
|
||||
"% c #69282E",
|
||||
"& c #37C539",
|
||||
"* c #1D2F4D",
|
||||
"= c #6D7076",
|
||||
"- c #7D8482",
|
||||
"; c #E24A49",
|
||||
"> c #515357",
|
||||
", c #9B9C9B",
|
||||
"' c #2FA232",
|
||||
") c #3CE23D",
|
||||
"! c #3B6CCB",
|
||||
" ",
|
||||
" ***> ",
|
||||
" >.*!!!* ",
|
||||
" ***....#*= ",
|
||||
" *!*.!!!**!!# ",
|
||||
" .!!#*!#*!!!!# ",
|
||||
" @%#!.##.*!!$& ",
|
||||
" @;%*!*.#!#')) ",
|
||||
" @;;@%!!*$&)'' ",
|
||||
" @%.%@%$'&)$+' ",
|
||||
" @;...@$'*'*)+ ",
|
||||
" @;%..@$+*.')$ ",
|
||||
" @;%%;;$+..$)# ",
|
||||
" @;%%;@$$$'.$# ",
|
||||
" %;@@;;$$+))&* ",
|
||||
" %;;;@+$&)&* ",
|
||||
" %;;@'))+> ",
|
||||
" %;@'&# ",
|
||||
" >%$$ ",
|
||||
" >= "};
|
||||
|
||||
const gchar ** xpms[] = {
|
||||
book_open_xpm,
|
||||
book_closed_xpm,
|
||||
mini_page_xpm,
|
||||
gtk_mini_xpm,
|
||||
NULL
|
||||
};
|
||||
|
||||
static void
|
||||
quit_func (GtkWidget *widget, gpointer dummy)
|
||||
{
|
||||
gtk_main_quit ();
|
||||
}
|
||||
|
||||
static void
|
||||
expose_func (GtkWidget *drawing_area, GdkEventExpose *event, gpointer data)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
pixbuf = (GdkPixbuf *)g_object_get_data (G_OBJECT (drawing_area), "pixbuf");
|
||||
|
||||
if (gdk_pixbuf_get_has_alpha (pixbuf)) {
|
||||
GdkPixbuf *dest;
|
||||
|
||||
gdk_window_set_back_pixmap (drawing_area->window, NULL, FALSE);
|
||||
|
||||
dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, event->area.width, event->area.height);
|
||||
|
||||
gdk_pixbuf_composite_color (pixbuf, dest,
|
||||
0, 0, event->area.width, event->area.height,
|
||||
-event->area.x, -event->area.y,
|
||||
(double) drawing_area->allocation.width / gdk_pixbuf_get_width (pixbuf),
|
||||
(double) drawing_area->allocation.height / gdk_pixbuf_get_height (pixbuf),
|
||||
GDK_INTERP_BILINEAR, 255,
|
||||
event->area.x, event->area.y, 16, 0xaaaaaa, 0x555555);
|
||||
|
||||
gdk_draw_pixbuf (drawing_area->window, drawing_area->style->fg_gc[GTK_STATE_NORMAL], dest,
|
||||
0, 0, event->area.x, event->area.y,
|
||||
event->area.width, event->area.height,
|
||||
GDK_RGB_DITHER_NORMAL, event->area.x, event->area.y);
|
||||
|
||||
g_object_unref (dest);
|
||||
} else {
|
||||
gdk_draw_rgb_image (drawing_area->window,
|
||||
drawing_area->style->white_gc,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width,
|
||||
event->area.height,
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
gdk_pixbuf_get_pixels (pixbuf)
|
||||
+ (event->area.y * gdk_pixbuf_get_rowstride (pixbuf))
|
||||
+ (event->area.x * gdk_pixbuf_get_n_channels (pixbuf)),
|
||||
gdk_pixbuf_get_rowstride (pixbuf));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
config_func (GtkWidget *drawing_area, GdkEventConfigure *event, gpointer data)
|
||||
{
|
||||
#if 0
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
pixbuf = (GdkPixbuf *)g_object_get_data (G_OBJECT (drawing_area), "pixbuf");
|
||||
|
||||
if (((event->width) != gdk_pixbuf_get_width (pixbuf)) ||
|
||||
((event->height) != gdk_pixbuf_get_height (pixbuf)))
|
||||
gdk_pixbuf_scale (pixbuf, event->width, event->height);
|
||||
#endif
|
||||
}
|
||||
|
||||
static GtkWidget*
|
||||
new_testrgb_window (GdkPixbuf *pixbuf, gchar *title)
|
||||
{
|
||||
GtkWidget *window;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *temp_box;
|
||||
GtkWidget *button;
|
||||
GtkWidget *drawing_area;
|
||||
gint w, h;
|
||||
|
||||
g_return_val_if_fail (pixbuf != NULL, NULL);
|
||||
w = gdk_pixbuf_get_width (pixbuf);
|
||||
h = gdk_pixbuf_get_height (pixbuf);
|
||||
|
||||
window = g_object_new (gtk_window_get_type (),
|
||||
"GtkObject::user_data", NULL,
|
||||
"GtkWindow::type", GTK_WINDOW_TOPLEVEL,
|
||||
"GtkWindow::title", title ? title : "testrgb",
|
||||
"GtkWindow::allow_shrink", TRUE,
|
||||
NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (quit_func), NULL);
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
|
||||
if (title)
|
||||
gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new (title),
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
drawing_area = gtk_drawing_area_new ();
|
||||
|
||||
temp_box = gtk_hbox_new (FALSE, 0);
|
||||
gtk_widget_set_size_request (GTK_WIDGET (drawing_area), w, h);
|
||||
gtk_box_pack_start (GTK_BOX (temp_box), drawing_area, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), temp_box, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
g_signal_connect (drawing_area, "expose_event",
|
||||
G_CALLBACK (expose_func), NULL);
|
||||
g_signal_connect (drawing_area, "configure_event",
|
||||
G_CALLBACK (config_func), NULL);
|
||||
|
||||
g_object_set_data (G_OBJECT (drawing_area), "pixbuf", pixbuf);
|
||||
|
||||
gtk_widget_show (drawing_area);
|
||||
|
||||
button = gtk_button_new_with_label ("Quit");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
g_signal_connect_swapped (button, "clicked",
|
||||
G_CALLBACK (gtk_widget_destroy), window);
|
||||
|
||||
gtk_widget_show (button);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
gtk_widget_show_all (vbox);
|
||||
|
||||
gtk_widget_show (window);
|
||||
|
||||
return drawing_area;
|
||||
}
|
||||
|
||||
|
||||
static gint
|
||||
update_timeout (gpointer data)
|
||||
{
|
||||
ProgressFileStatus *status = data;
|
||||
gboolean done;
|
||||
GError *error;
|
||||
|
||||
done = FALSE;
|
||||
error = NULL;
|
||||
|
||||
if (!feof (status->imagefile)) {
|
||||
gint nbytes;
|
||||
|
||||
nbytes = fread (status->buf, 1, status->readlen,
|
||||
status->imagefile);
|
||||
|
||||
|
||||
if (!gdk_pixbuf_loader_write (GDK_PIXBUF_LOADER (status->loader), status->buf, nbytes, &error)) {
|
||||
g_warning ("Error writing to loader: %s",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
done = TRUE;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
done = TRUE;
|
||||
|
||||
if (done) {
|
||||
/* ignoring errors, we should not do that. */
|
||||
gdk_pixbuf_loader_close (GDK_PIXBUF_LOADER (status->loader), NULL);
|
||||
gtk_widget_queue_draw (*status->rgbwin);
|
||||
g_object_unref (status->loader);
|
||||
fclose (status->imagefile);
|
||||
g_free (status->buf);
|
||||
}
|
||||
|
||||
return !done;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
progressive_prepared_callback (GdkPixbufLoader* loader, gpointer data)
|
||||
{
|
||||
GtkWidget** retloc = data;
|
||||
GdkPixbuf* pixbuf;
|
||||
|
||||
pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
|
||||
|
||||
g_assert (pixbuf != NULL);
|
||||
|
||||
g_object_ref (pixbuf); /* for the RGB window */
|
||||
|
||||
*retloc = new_testrgb_window (pixbuf, "Progressive");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
progressive_updated_callback (GdkPixbufLoader* loader, guint x, guint y, guint width, guint height, gpointer data)
|
||||
{
|
||||
GtkWidget** window_loc = data;
|
||||
|
||||
if (*window_loc != NULL)
|
||||
gtk_widget_queue_draw_area (*window_loc,
|
||||
x, y, width, height);
|
||||
return;
|
||||
}
|
||||
|
||||
static int readlen = 4096;
|
||||
|
||||
extern void pixbuf_init (void);
|
||||
|
||||
void size_func (GdkPixbufLoader *loader, gint width, gint height, gpointer data)
|
||||
{
|
||||
gdk_pixbuf_loader_set_size (loader, width*2, height*2);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
int found_valid = FALSE;
|
||||
|
||||
GdkPixbuf *pixbuf;
|
||||
GdkPixbufLoader *pixbuf_loader;
|
||||
|
||||
pixbuf_init ();
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
/* gdk_rgb_set_verbose (TRUE);*/
|
||||
|
||||
gtk_widget_set_default_colormap (gdk_rgb_get_colormap ());
|
||||
|
||||
{
|
||||
char *tbf_readlen = getenv ("TBF_READLEN");
|
||||
if (tbf_readlen) readlen = atoi (tbf_readlen);
|
||||
}
|
||||
|
||||
{
|
||||
char *tbf_bps = getenv ("TBF_KBPS");
|
||||
guint bps;
|
||||
|
||||
if (tbf_bps) {
|
||||
bps = atoi (tbf_bps);
|
||||
g_print ("Simulating %d kBytes/sec\n", bps);
|
||||
readlen = (bps*1024)/10;
|
||||
}
|
||||
}
|
||||
|
||||
i = 1;
|
||||
if (argc == 1) {
|
||||
const gchar*** xpmp;
|
||||
GError *error = NULL;
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_data (default_image, GDK_COLORSPACE_RGB, FALSE, 8,
|
||||
DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_WIDTH * 3,
|
||||
NULL, NULL);
|
||||
new_testrgb_window (pixbuf, NULL);
|
||||
|
||||
xpmp = xpms;
|
||||
while (*xpmp) {
|
||||
pixbuf = gdk_pixbuf_new_from_xpm_data (*xpmp);
|
||||
new_testrgb_window (pixbuf, NULL);
|
||||
++xpmp;
|
||||
}
|
||||
|
||||
/* Test loading from inline data. */
|
||||
pixbuf = gdk_pixbuf_new_from_inline (-1, apple_red, FALSE, &error);
|
||||
if (!pixbuf)
|
||||
{
|
||||
fprintf (stderr, "failed to construct \"red apple\" pixbuf: %s\n",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
else
|
||||
new_testrgb_window (pixbuf, "Red apple from inlined RLE data");
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_inline (sizeof (gnome_foot), gnome_foot, TRUE, NULL);
|
||||
new_testrgb_window (pixbuf, "GNOME Foot from inlined RLE data");
|
||||
|
||||
found_valid = TRUE;
|
||||
} else {
|
||||
for (i = 1; i < argc; i++) {
|
||||
GError *error;
|
||||
|
||||
error = NULL;
|
||||
pixbuf = gdk_pixbuf_new_from_file (argv[i], &error);
|
||||
|
||||
if (pixbuf == NULL) {
|
||||
g_warning ("Error loading image: %s",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
#if 0
|
||||
pixbuf = gdk_pixbuf_rotate (pixbuf, 10.0);
|
||||
#endif
|
||||
|
||||
if (pixbuf) {
|
||||
new_testrgb_window (pixbuf, "File");
|
||||
found_valid = TRUE;
|
||||
}
|
||||
}
|
||||
#if 1
|
||||
{
|
||||
GtkWidget* rgb_window = NULL;
|
||||
ProgressFileStatus status;
|
||||
|
||||
pixbuf_loader = gdk_pixbuf_loader_new ();
|
||||
status.loader = pixbuf_loader;
|
||||
|
||||
status.rgbwin = &rgb_window;
|
||||
|
||||
status.buf = g_malloc (readlen);
|
||||
|
||||
#if 0
|
||||
g_signal_connect (pixbuf_loader, "size_prepared",
|
||||
G_CALLBACK (size_func), NULL);
|
||||
#endif
|
||||
|
||||
g_signal_connect (pixbuf_loader, "area_prepared",
|
||||
G_CALLBACK (progressive_prepared_callback),
|
||||
&rgb_window);
|
||||
g_signal_connect (pixbuf_loader, "area_updated",
|
||||
G_CALLBACK (progressive_updated_callback),
|
||||
&rgb_window);
|
||||
|
||||
status.imagefile = fopen (argv[1], "r");
|
||||
g_assert (status.imagefile != NULL);
|
||||
|
||||
status.readlen = readlen;
|
||||
|
||||
status.timeout = gdk_threads_add_timeout (100, update_timeout, &status);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (found_valid)
|
||||
gtk_main ();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -17,6 +17,8 @@ pdf:
|
||||
(cd $(srcdir); db2pdf gtk-faq.sgml); \
|
||||
fi
|
||||
|
||||
all-local: html
|
||||
|
||||
dist-hook: html
|
||||
cp -Rp $(srcdir)/html $(distdir)
|
||||
else
|
||||
|
||||
@@ -21,17 +21,14 @@ CFILE_GLOB=$(top_srcdir)/gdk/*.c
|
||||
|
||||
# Header files to ignore when scanning
|
||||
IGNORE_HFILES= \
|
||||
gdkalias.h \
|
||||
gdkintl.h \
|
||||
gdkmarshalers.h \
|
||||
gdkkeysyms.h \
|
||||
gdkinternals.h \
|
||||
gdkprivate.h \
|
||||
gdkpoly-generic.h \
|
||||
gdkregion-generic.h \
|
||||
keyname-table.h \
|
||||
win32 \
|
||||
directfb \
|
||||
x11 \
|
||||
quartz
|
||||
|
||||
|
||||
@@ -24,12 +24,9 @@
|
||||
<xi:include href="xml/gdkscreen.xml" />
|
||||
|
||||
<xi:include href="xml/regions.xml" />
|
||||
<xi:include href="xml/gcs.xml" />
|
||||
<xi:include href="xml/drawing.xml" />
|
||||
|
||||
<xi:include href="xml/pixmaps.xml" />
|
||||
<xi:include href="xml/rgb.xml" />
|
||||
<xi:include href="xml/images.xml" />
|
||||
<xi:include href="xml/pixbufs.xml" />
|
||||
|
||||
<xi:include href="xml/colors.xml" />
|
||||
|
||||
@@ -52,7 +52,6 @@ gdk_error_trap_pop
|
||||
GDK_WINDOWING_X11
|
||||
GDK_WINDOWING_WIN32
|
||||
GDK_WINDOWING_QUARTZ
|
||||
GDK_WINDOWING_DIRECTFB
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_TYPE_GRAB_STATUS
|
||||
@@ -71,26 +70,17 @@ gdk_drag_protocol_get_type
|
||||
gdk_event_mask_get_type
|
||||
gdk_event_type_get_type
|
||||
gdk_extension_mode_get_type
|
||||
gdk_fill_get_type
|
||||
gdk_fill_rule_get_type
|
||||
gdk_filter_return_get_type
|
||||
gdk_font_type_get_type
|
||||
gdk_function_get_type
|
||||
gdk_gc_values_mask_get_type
|
||||
gdk_grab_ownership_get_type
|
||||
gdk_grab_status_get_type
|
||||
gdk_gravity_get_type
|
||||
gdk_image_type_get_type
|
||||
gdk_input_mode_get_type
|
||||
gdk_input_source_get_type
|
||||
gdk_join_style_get_type
|
||||
gdk_line_style_get_type
|
||||
gdk_modifier_type_get_type
|
||||
gdk_notify_type_get_type
|
||||
gdk_overlap_type_get_type
|
||||
gdk_property_state_get_type
|
||||
gdk_prop_mode_get_type
|
||||
gdk_rgb_dither_get_type
|
||||
gdk_scroll_direction_get_type
|
||||
gdk_setting_action_get_type
|
||||
gdk_status_get_type
|
||||
@@ -130,6 +120,7 @@ gdk_display_beep
|
||||
gdk_display_sync
|
||||
gdk_display_flush
|
||||
gdk_display_close
|
||||
gdk_display_is_closed
|
||||
gdk_display_list_devices
|
||||
gdk_display_get_event
|
||||
gdk_display_peek_event
|
||||
@@ -202,8 +193,6 @@ gdk_screen_get_default_colormap
|
||||
gdk_screen_set_default_colormap
|
||||
gdk_screen_get_system_colormap
|
||||
gdk_screen_get_system_visual
|
||||
gdk_screen_get_rgb_colormap
|
||||
gdk_screen_get_rgb_visual
|
||||
gdk_screen_get_rgba_colormap
|
||||
gdk_screen_get_rgba_visual
|
||||
gdk_screen_is_composited
|
||||
@@ -255,12 +244,6 @@ gdk_screen_get_type
|
||||
<FILE>pixmaps</FILE>
|
||||
GdkPixmap
|
||||
gdk_pixmap_new
|
||||
gdk_bitmap_create_from_data
|
||||
gdk_pixmap_create_from_data
|
||||
gdk_pixmap_create_from_xpm
|
||||
gdk_pixmap_colormap_create_from_xpm
|
||||
gdk_pixmap_create_from_xpm_d
|
||||
gdk_pixmap_colormap_create_from_xpm_d
|
||||
GdkBitmap
|
||||
|
||||
<SUBSECTION Standard>
|
||||
@@ -278,77 +261,6 @@ GdkPixmapObject
|
||||
GdkPixmapObjectClass
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>Images</TITLE>
|
||||
<FILE>images</FILE>
|
||||
GdkImage
|
||||
gdk_image_new
|
||||
GdkImageType
|
||||
gdk_image_get_colormap
|
||||
gdk_image_set_colormap
|
||||
gdk_image_get_bits_per_pixel
|
||||
gdk_image_get_bytes_per_pixel
|
||||
gdk_image_get_bytes_per_line
|
||||
gdk_image_get_byte_order
|
||||
gdk_image_get_depth
|
||||
gdk_image_get_height
|
||||
gdk_image_get_image_type
|
||||
gdk_image_get_visual
|
||||
gdk_image_get_width
|
||||
gdk_image_get_pixels
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_image_put_pixel
|
||||
gdk_image_get_pixel
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_IMAGE
|
||||
GDK_TYPE_IMAGE
|
||||
GDK_IS_IMAGE
|
||||
GDK_IMAGE_CLASS
|
||||
GDK_IMAGE_GET_CLASS
|
||||
GDK_IS_IMAGE_CLASS
|
||||
GDK_TYPE_IMAGE_TYPE
|
||||
|
||||
<SUBSECTION Private>
|
||||
GdkImageClass
|
||||
gdk_image_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>GdkRGB</TITLE>
|
||||
<FILE>rgb</FILE>
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_draw_rgb_image
|
||||
gdk_draw_rgb_image_dithalign
|
||||
gdk_draw_indexed_image
|
||||
gdk_draw_gray_image
|
||||
gdk_draw_rgb_32_image
|
||||
gdk_draw_rgb_32_image_dithalign
|
||||
GdkRgbDither
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_rgb_cmap_new
|
||||
gdk_rgb_cmap_free
|
||||
GdkRgbCmap
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_rgb_find_color
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_rgb_set_install
|
||||
gdk_rgb_set_min_colors
|
||||
gdk_rgb_get_visual
|
||||
gdk_rgb_get_colormap
|
||||
gdk_rgb_ditherable
|
||||
gdk_rgb_colormap_ditherable
|
||||
gdk_rgb_set_verbose
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_TYPE_RGB_DITHER
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>Pixbufs</TITLE>
|
||||
<FILE>pixbufs</FILE>
|
||||
@@ -356,7 +268,7 @@ gdk_pixbuf_render_threshold_alpha
|
||||
gdk_pixbuf_render_pixmap_and_mask
|
||||
gdk_pixbuf_render_pixmap_and_mask_for_colormap
|
||||
gdk_pixbuf_get_from_drawable
|
||||
gdk_pixbuf_get_from_image
|
||||
gdk_pixbuf_get_from_surface
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
@@ -369,7 +281,6 @@ gdk_colormap_get_system
|
||||
gdk_colormap_alloc_colors
|
||||
gdk_colormap_alloc_color
|
||||
gdk_colormap_free_colors
|
||||
gdk_colormap_query_color
|
||||
gdk_colormap_get_visual
|
||||
gdk_colormap_get_screen
|
||||
gdk_color_copy
|
||||
@@ -394,31 +305,6 @@ gdk_colormap_get_type
|
||||
gdk_color_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>Fonts</TITLE>
|
||||
<FILE>fonts</FILE>
|
||||
GdkFont
|
||||
GdkFontType
|
||||
gdk_font_load
|
||||
gdk_font_load_for_display
|
||||
gdk_fontset_load
|
||||
gdk_fontset_load_for_display
|
||||
gdk_font_from_description
|
||||
gdk_font_from_description_for_display
|
||||
gdk_font_get_display
|
||||
gdk_font_ref
|
||||
gdk_font_unref
|
||||
gdk_font_id
|
||||
gdk_font_equal
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_TYPE_FONT
|
||||
GDK_TYPE_FONT_TYPE
|
||||
|
||||
<SUBSECTION Private>
|
||||
gdk_font_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>Drawing Primitives</TITLE>
|
||||
<FILE>drawing</FILE>
|
||||
@@ -433,32 +319,6 @@ gdk_drawable_get_size
|
||||
gdk_drawable_get_clip_region
|
||||
gdk_drawable_get_visible_region
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_draw_point
|
||||
gdk_draw_points
|
||||
gdk_draw_line
|
||||
gdk_draw_lines
|
||||
gdk_draw_pixbuf
|
||||
gdk_draw_segments
|
||||
GdkSegment
|
||||
gdk_draw_rectangle
|
||||
gdk_draw_arc
|
||||
gdk_draw_polygon
|
||||
gdk_draw_trapezoids
|
||||
GdkTrapezoid
|
||||
gdk_draw_glyphs
|
||||
gdk_draw_glyphs_transformed
|
||||
gdk_draw_layout_line
|
||||
gdk_draw_layout_line_with_colors
|
||||
gdk_draw_layout
|
||||
gdk_draw_layout_with_colors
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_draw_drawable
|
||||
gdk_draw_image
|
||||
gdk_drawable_get_image
|
||||
gdk_drawable_copy_to_image
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_DRAWABLE
|
||||
GDK_DRAWABLE_GET_CLASS
|
||||
@@ -471,69 +331,6 @@ GDK_IS_DRAWABLE_CLASS
|
||||
GdkDrawableClass
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>Graphics Contexts</TITLE>
|
||||
<FILE>gcs</FILE>
|
||||
GdkGC
|
||||
GdkGCValues
|
||||
GdkGCValuesMask
|
||||
|
||||
GdkFunction
|
||||
|
||||
gdk_gc_new
|
||||
gdk_gc_new_with_values
|
||||
gdk_gc_get_screen
|
||||
gdk_gc_set_values
|
||||
gdk_gc_get_values
|
||||
gdk_gc_set_foreground
|
||||
gdk_gc_set_background
|
||||
gdk_gc_set_rgb_fg_color
|
||||
gdk_gc_set_rgb_bg_color
|
||||
gdk_gc_set_function
|
||||
gdk_gc_set_fill
|
||||
GdkFill
|
||||
gdk_gc_set_tile
|
||||
gdk_gc_set_stipple
|
||||
gdk_gc_set_ts_origin
|
||||
gdk_gc_set_clip_origin
|
||||
gdk_gc_set_clip_mask
|
||||
gdk_gc_set_clip_rectangle
|
||||
gdk_gc_set_clip_region
|
||||
gdk_gc_set_subwindow
|
||||
GdkSubwindowMode
|
||||
gdk_gc_set_exposures
|
||||
gdk_gc_set_line_attributes
|
||||
GdkLineStyle
|
||||
GdkCapStyle
|
||||
GdkJoinStyle
|
||||
gdk_gc_set_dashes
|
||||
gdk_gc_copy
|
||||
gdk_gc_set_colormap
|
||||
gdk_gc_get_colormap
|
||||
|
||||
gdk_gc_offset
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_GC
|
||||
GDK_TYPE_GC
|
||||
GDK_IS_GC
|
||||
GDK_GC_CLASS
|
||||
GDK_GC_GET_CLASS
|
||||
GDK_IS_GC_CLASS
|
||||
GDK_TYPE_CAP_STYLE
|
||||
GDK_TYPE_FILL
|
||||
GDK_TYPE_FILL_RULE
|
||||
GDK_TYPE_FUNCTION
|
||||
GDK_TYPE_GC_VALUES_MASK
|
||||
GDK_TYPE_JOIN_STYLE
|
||||
GDK_TYPE_LINE_STYLE
|
||||
GDK_TYPE_SUBWINDOW_MODE
|
||||
|
||||
<SUBSECTION Private>
|
||||
GdkGCClass
|
||||
gdk_gc_get_type
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>Visuals</TITLE>
|
||||
<FILE>visuals</FILE>
|
||||
@@ -621,6 +418,7 @@ gdk_window_move_resize
|
||||
gdk_window_scroll
|
||||
gdk_window_move_region
|
||||
gdk_window_flush
|
||||
gdk_window_has_native
|
||||
gdk_window_ensure_native
|
||||
gdk_window_reparent
|
||||
gdk_window_clear
|
||||
@@ -678,9 +476,8 @@ gdk_window_merge_child_input_shapes
|
||||
gdk_window_set_static_gravities
|
||||
gdk_window_set_title
|
||||
gdk_window_set_background
|
||||
gdk_window_get_background
|
||||
gdk_window_set_back_pixmap
|
||||
gdk_window_get_back_pixmap
|
||||
gdk_window_get_background_pattern
|
||||
GDK_PARENT_RELATIVE
|
||||
gdk_window_set_cursor
|
||||
gdk_window_get_cursor
|
||||
@@ -751,7 +548,6 @@ gdk_window_get_effective_toplevel
|
||||
<SUBSECTION Standard>
|
||||
GDK_WINDOW
|
||||
GDK_WINDOW_GET_CLASS
|
||||
GDK_WINDOW_OBJECT
|
||||
GDK_TYPE_WINDOW
|
||||
GDK_IS_WINDOW
|
||||
GDK_WINDOW_CLASS
|
||||
@@ -843,40 +639,16 @@ GDK_TYPE_PROP_MODE
|
||||
<SECTION>
|
||||
<TITLE>Pango Interaction</TITLE>
|
||||
<FILE>pango_interaction</FILE>
|
||||
GdkPangoRenderer
|
||||
GdkPangoRendererClass
|
||||
gdk_pango_renderer_new
|
||||
gdk_pango_renderer_get_default
|
||||
gdk_pango_renderer_set_drawable
|
||||
gdk_pango_renderer_set_gc
|
||||
gdk_pango_renderer_set_stipple
|
||||
gdk_pango_renderer_set_override_color
|
||||
gdk_pango_context_get
|
||||
gdk_pango_context_get_for_screen
|
||||
GdkPangoAttrEmbossed
|
||||
GdkPangoAttrEmbossColor
|
||||
GdkPangoAttrStipple
|
||||
gdk_pango_attr_emboss_color_new
|
||||
gdk_pango_attr_embossed_new
|
||||
gdk_pango_attr_stipple_new
|
||||
gdk_pango_layout_get_clip_region
|
||||
gdk_pango_layout_line_get_clip_region
|
||||
<SUBSECTION Standard>
|
||||
GDK_TYPE_PANGO_RENDERER
|
||||
GDK_PANGO_RENDERER
|
||||
GDK_IS_PANGO_RENDERER
|
||||
GDK_PANGO_RENDERER_CLASS
|
||||
GDK_IS_PANGO_RENDERER_CLASS
|
||||
GDK_PANGO_RENDERER_GET_CLASS
|
||||
|
||||
<SUBSECTION Private>
|
||||
gdk_pango_renderer_get_type
|
||||
GdkPangoRendererPrivate
|
||||
gdk_pango_context_get
|
||||
gdk_pango_context_get_for_screen
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<TITLE>Cairo Interaction</TITLE>
|
||||
<FILE>cairo_interaction</FILE>
|
||||
gdk_window_create_similar_surface
|
||||
gdk_cairo_create
|
||||
gdk_cairo_set_source_color
|
||||
gdk_cairo_set_source_pixbuf
|
||||
@@ -896,43 +668,6 @@ GdkRectangle
|
||||
gdk_rectangle_intersect
|
||||
gdk_rectangle_union
|
||||
|
||||
<SUBSECTION>
|
||||
GdkRegion
|
||||
gdk_region_new
|
||||
gdk_region_polygon
|
||||
GdkFillRule
|
||||
gdk_region_copy
|
||||
gdk_region_rectangle
|
||||
gdk_region_destroy
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_region_get_clipbox
|
||||
gdk_region_get_rectangles
|
||||
gdk_region_empty
|
||||
gdk_region_equal
|
||||
gdk_region_rect_equal
|
||||
gdk_region_point_in
|
||||
gdk_region_rect_in
|
||||
GdkOverlapType
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_region_offset
|
||||
gdk_region_shrink
|
||||
gdk_region_union_with_rect
|
||||
gdk_region_intersect
|
||||
gdk_region_union
|
||||
gdk_region_subtract
|
||||
gdk_region_xor
|
||||
|
||||
<SUBSECTION>
|
||||
GdkSpan
|
||||
GdkSpanFunc
|
||||
gdk_region_spans_intersect_foreach
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GDK_TYPE_OVERLAP_TYPE
|
||||
GDK_TYPE_RECTANGLE
|
||||
|
||||
<SUBSECTION Private>
|
||||
gdk_rectangle_get_type
|
||||
</SECTION>
|
||||
@@ -973,6 +708,7 @@ gdk_keymap_get_entries_for_keycode
|
||||
gdk_keymap_get_direction
|
||||
gdk_keymap_have_bidi_layouts
|
||||
gdk_keymap_get_caps_lock_state
|
||||
gdk_keymap_get_num_lock_state
|
||||
gdk_keymap_add_virtual_modifiers
|
||||
gdk_keymap_map_virtual_modifiers
|
||||
|
||||
@@ -1209,6 +945,7 @@ gdk_cursor_new_from_name
|
||||
gdk_cursor_new_for_display
|
||||
gdk_cursor_get_display
|
||||
gdk_cursor_get_image
|
||||
gdk_cursor_get_cursor_type
|
||||
gdk_cursor_ref
|
||||
gdk_cursor_unref
|
||||
|
||||
@@ -1277,21 +1014,14 @@ GDK_PIXMAP_XID
|
||||
GDK_DISPLAY_XDISPLAY
|
||||
GDK_DRAWABLE_XDISPLAY
|
||||
GDK_DRAWABLE_XID
|
||||
GDK_IMAGE_XDISPLAY
|
||||
GDK_IMAGE_XIMAGE
|
||||
GDK_GC_XDISPLAY
|
||||
GDK_COLORMAP_XDISPLAY
|
||||
GDK_COLORMAP_XCOLORMAP
|
||||
GDK_SCREEN_XDISPLAY
|
||||
GDK_SCREEN_XNUMBER
|
||||
GDK_SCREEN_XSCREEN
|
||||
GDK_VISUAL_XVISUAL
|
||||
GDK_FONT_XDISPLAY
|
||||
GDK_FONT_XFONT
|
||||
GDK_CURSOR_XCURSOR
|
||||
GDK_CURSOR_XDISPLAY
|
||||
GDK_GC_XGC
|
||||
GDK_GC_GET_XGC
|
||||
GDK_WINDOW_XWINDOW
|
||||
gdkx_visual_get
|
||||
gdk_pixmap_foreign_new
|
||||
@@ -1305,8 +1035,6 @@ gdk_window_lookup
|
||||
gdk_window_lookup_for_display
|
||||
gdk_pixmap_lookup
|
||||
gdk_pixmap_lookup_for_display
|
||||
gdk_font_lookup
|
||||
gdk_font_lookup_for_display
|
||||
gdk_x11_lookup_xdisplay
|
||||
gdk_x11_get_server_time
|
||||
gdk_net_wm_supports
|
||||
@@ -1331,17 +1059,10 @@ gdk_x11_display_set_cursor_theme
|
||||
gdk_x11_register_standard_event_type
|
||||
gdk_x11_drawable_get_xdisplay
|
||||
gdk_x11_drawable_get_xid
|
||||
gdk_x11_font_get_name
|
||||
gdk_x11_font_get_xdisplay
|
||||
gdk_x11_font_get_xfont
|
||||
gdk_x11_gc_get_xdisplay
|
||||
gdk_x11_gc_get_xgc
|
||||
gdk_x11_get_default_root_xwindow
|
||||
gdk_x11_get_default_screen
|
||||
gdk_x11_get_default_xdisplay
|
||||
gdk_x11_grab_server
|
||||
gdk_x11_image_get_xdisplay
|
||||
gdk_x11_image_get_ximage
|
||||
gdk_x11_screen_get_screen_number
|
||||
gdk_x11_screen_get_xscreen
|
||||
gdk_x11_ungrab_server
|
||||
|
||||
@@ -5,9 +5,7 @@ gdk_display_manager_get_type
|
||||
gdk_screen_get_type
|
||||
gdk_drawable_get_type
|
||||
gdk_window_object_get_type
|
||||
gdk_pango_renderer_get_type
|
||||
gdk_pixmap_get_type
|
||||
gdk_gc_get_type
|
||||
gdk_keymap_get_type
|
||||
gdk_device_get_type
|
||||
gdk_device_manager_get_type
|
||||
|
||||
@@ -116,16 +116,6 @@ The colormap structure contains the following public fields.
|
||||
@n_colors:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_colormap_query_color ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@colormap:
|
||||
@pixel:
|
||||
@result:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_colormap_get_visual ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@@ -199,6 +199,15 @@ The standard cursors available.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_cursor_get_cursor_type ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@cursor:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_cursor_ref ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -127,293 +127,3 @@ or a #GdkWindow.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_point ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@x:
|
||||
@y:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_points ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@points:
|
||||
@n_points:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_line ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@x1_:
|
||||
@y1_:
|
||||
@x2_:
|
||||
@y2_:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_lines ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@points:
|
||||
lines.
|
||||
@n_points:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_pixbuf ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@pixbuf:
|
||||
@src_x:
|
||||
@src_y:
|
||||
@dest_x:
|
||||
@dest_y:
|
||||
@width:
|
||||
@height:
|
||||
@dither:
|
||||
@x_dither:
|
||||
@y_dither:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_segments ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@segs:
|
||||
@n_segs:
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkSegment ##### -->
|
||||
<para>
|
||||
Specifies the start and end point of a line for use by the gdk_draw_segments()
|
||||
function.
|
||||
</para>
|
||||
|
||||
@x1: the x coordinate of the start point.
|
||||
@y1: the y coordinate of the start point.
|
||||
@x2: the x coordinate of the end point.
|
||||
@y2: the y coordinate of the end point.
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_rectangle ##### -->
|
||||
<para>
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
</para>
|
||||
</note>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@filled:
|
||||
@x:
|
||||
@y:
|
||||
@width:
|
||||
@height:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_arc ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@filled:
|
||||
@x:
|
||||
@y:
|
||||
@width:
|
||||
@height:
|
||||
@angle1:
|
||||
@angle2:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_polygon ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@filled:
|
||||
@points:
|
||||
@n_points:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_trapezoids ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@trapezoids:
|
||||
@n_trapezoids:
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkTrapezoid ##### -->
|
||||
<para>
|
||||
Specifies a trapezpoid for use by the gdk_draw_trapezoids().
|
||||
The trapezoids used here have parallel, horizontal top and
|
||||
bottom edges.
|
||||
</para>
|
||||
|
||||
@y1: the y coordinate of the start point.
|
||||
@x11: the x coordinate of the top left corner
|
||||
@x21: the x coordinate of the top right corner
|
||||
@y2: the y coordinate of the end point.
|
||||
@x12: the x coordinate of the bottom left corner
|
||||
@x22: the x coordinate of the bottom right corner
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_glyphs ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@font:
|
||||
@x:
|
||||
@y:
|
||||
@glyphs:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_glyphs_transformed ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@matrix:
|
||||
@font:
|
||||
@x:
|
||||
@y:
|
||||
@glyphs:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_layout_line ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@x:
|
||||
@y:
|
||||
@line:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_layout_line_with_colors ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@x:
|
||||
@y:
|
||||
@line:
|
||||
@foreground:
|
||||
@background:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_layout ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@x:
|
||||
@y:
|
||||
@layout:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_layout_with_colors ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@x:
|
||||
@y:
|
||||
@layout:
|
||||
@foreground:
|
||||
@background:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_drawable ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@src:
|
||||
@xsrc:
|
||||
@ysrc:
|
||||
@xdest:
|
||||
@ydest:
|
||||
@width:
|
||||
@height:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_image ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@image:
|
||||
@xsrc:
|
||||
@ysrc:
|
||||
@xdest:
|
||||
@ydest:
|
||||
@width:
|
||||
@height:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_drawable_get_image ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@x:
|
||||
@y:
|
||||
@width:
|
||||
@height:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_drawable_copy_to_image ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@image:
|
||||
@src_x:
|
||||
@src_y:
|
||||
@dest_x:
|
||||
@dest_y:
|
||||
@width:
|
||||
@height:
|
||||
@Returns:
|
||||
|
||||
|
||||
|
||||
@@ -382,8 +382,7 @@ union, 16-bit data uses the s array, and 32-bit data uses the l array.
|
||||
|
||||
<!-- ##### STRUCT GdkEventNoExpose ##### -->
|
||||
<para>
|
||||
Generated when the area of a #GdkDrawable being copied, with gdk_draw_drawable()
|
||||
, was completely available.
|
||||
Generated when the area of a #GdkDrawable being copied was completely available.
|
||||
</para>
|
||||
<para>
|
||||
FIXME: add more here.
|
||||
|
||||
@@ -1,371 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
Fonts
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
Loading and manipulating fonts
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
The #GdkFont data type represents a font for drawing on
|
||||
the screen. These functions provide support for
|
||||
loading fonts, and also for determining the dimensions
|
||||
of characters and strings when drawn with a particular
|
||||
font.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Fonts in X are specified by a
|
||||
<firstterm>X Logical Font Description</firstterm>.
|
||||
The following description is considerably simplified.
|
||||
For definitive information about XLFD's see the
|
||||
X reference documentation. A X Logical Font Description (XLFD)
|
||||
consists of a sequence of fields separated (and surrounded by) '-'
|
||||
characters. For example, Adobe Helvetica Bold 12 pt, has the
|
||||
full description:
|
||||
<informalexample><programlisting>
|
||||
"-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"
|
||||
</programlisting></informalexample>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The fields in the XLFD are:
|
||||
|
||||
<informaltable pgwide="1" frame="none">
|
||||
<tgroup cols="2"><colspec colwidth="2*"/><colspec colwidth="8*"/>
|
||||
<tbody>
|
||||
|
||||
<row>
|
||||
<entry>Foundry</entry>
|
||||
<entry>the company or organization where the font originated.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Family</entry>
|
||||
<entry>the font family (a group of related font designs).</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Weight</entry>
|
||||
<entry>A name for the font's typographic weight
|
||||
For example, 'bold' or 'medium').</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Slant</entry>
|
||||
<entry>The slant of the font. Common values are 'R' for Roman,
|
||||
'I' for italoc, and 'O' for oblique.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Set Width</entry>
|
||||
<entry>A name for the width of the font. For example,
|
||||
'normal' or 'condensed'.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Add Style</entry>
|
||||
<entry>Additional information to distinguish a font from
|
||||
other fonts of the same family.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Pixel Size</entry>
|
||||
<entry>The body size of the font in pixels.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Point Size</entry>
|
||||
<entry>The body size of the font in 10ths of a point.
|
||||
(A <firstterm>point</firstterm> is 1/72.27 inch) </entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Resolution X</entry>
|
||||
<entry>The horizontal resolution that the font was designed for.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Resolution Y</entry>
|
||||
<entry>The vertical resolution that the font was designed for .</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Spacing</entry>
|
||||
<entry>The type of spacing for the font - can be 'p' for proportional,
|
||||
'm' for monospaced or 'c' for charcell.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Average Width</entry>
|
||||
<entry>The average width of a glyph in the font. For monospaced
|
||||
and charcell fonts, all glyphs in the font have this width</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Charset Registry</entry>
|
||||
<entry>The registration authority that owns the encoding for
|
||||
the font. Together with the Charset Encoding field, this
|
||||
defines the character set for the font.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Charset Encoding</entry>
|
||||
<entry>An identifier for the particular character set encoding.</entry>
|
||||
</row>
|
||||
|
||||
</tbody></tgroup></informaltable>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When specifying a font via a X logical Font Description,
|
||||
'*' can be used as a wildcard to match any portion of
|
||||
the XLFD. For instance, the above example could
|
||||
also be specified as
|
||||
<informalexample><programlisting>
|
||||
"-*-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-1"
|
||||
</programlisting></informalexample>
|
||||
|
||||
It is generally a good idea to use wildcards for any
|
||||
portion of the XLFD that your program does not care
|
||||
about specifically, since that will improve the
|
||||
chances of finding a matching font.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
A <firstterm>fontset</firstterm> is a list of fonts
|
||||
that is used for drawing international text that may
|
||||
contain characters from a number of different character
|
||||
sets. It is represented by a list of XLFD's.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The font for a given character set is determined by going
|
||||
through the list of XLFD's in order. For each one, if
|
||||
the registry and and encoding fields match the desired
|
||||
character set, then that font is used, otherwise if
|
||||
the XLFD contains wild-cards for the registry and encoding
|
||||
fields, the registry and encoding for the desired character
|
||||
set are substituted in and a lookup is done. If a match is found
|
||||
that font is used. Otherwise, processing continues
|
||||
on to the next font in the list.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The functions for determining the metrics of a string
|
||||
come in several varieties that can take a number
|
||||
of forms of string input:
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>8-bit string</term>
|
||||
<listitem><para>
|
||||
When using functions like gdk_string_width() that
|
||||
take a <type>gchar *</type>, if the font is of type
|
||||
%GDK_FONT_FONT and is an 8-bit font, then each
|
||||
<type>gchar</type> indexes the glyphs in the font directly.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>16-bit string</term>
|
||||
<listitem><para>
|
||||
For functions taking a <type>gchar *</type>, if the
|
||||
font is of type %GDK_FONT_FONT, and is a 16-bit
|
||||
font, then the <type>gchar *</type> argument is
|
||||
interpreted as a <type>guint16 *</type> cast to
|
||||
a <type>gchar *</type> and each <type>guint16</type>
|
||||
indexes the glyphs in the font directly.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Multibyte string</term>
|
||||
<listitem><para>
|
||||
For functions taking a <type>gchar *</type>, if the
|
||||
font is of type %GDK_FONT_FONTSET, then the input
|
||||
string is interpreted as a <firstterm>multibyte</firstterm>
|
||||
encoded according to the current locale. (A multibyte
|
||||
string is one in which each character may consist
|
||||
of one or more bytes, with different lengths for different
|
||||
characters in the string). The string will
|
||||
be rendered using one or more different fonts from
|
||||
the fontset.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GDK provides functions to determine a number of different
|
||||
measurements (metrics) for a given string. (Need diagram
|
||||
here).
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>ascent</term>
|
||||
<listitem><para>
|
||||
The vertical distance from the origin of the drawing
|
||||
opereration to the top of the drawn character.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>descent</term>
|
||||
<listitem><para>
|
||||
The vertical distance from the origin of the drawing
|
||||
opereration to the bottom of the drawn character.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>left bearing</term>
|
||||
<listitem><para>
|
||||
The horizontal distance from the origin of the drawing
|
||||
operation to the left-most part of the drawn character.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>right bearing</term>
|
||||
<listitem><para>
|
||||
The horizontal distance from the origin of the drawing
|
||||
operation to the right-most part of the drawn character.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>width bearing</term>
|
||||
<listitem><para>
|
||||
The horizontal distance from the origin of the drawing
|
||||
operation to the correct origin for drawing another
|
||||
string to follow the current one. Depending on the
|
||||
font, this could be greater than or less than the
|
||||
right bearing.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkFont ##### -->
|
||||
<para>
|
||||
The <structname>GdkFont</structname> structure represents a font or fontset. It
|
||||
contains the following public fields. A new <structname>GdkFont</structname>
|
||||
structure is returned by gdk_font_load() or gdk_fontset_load(),
|
||||
and is reference counted with gdk_font_ref() and gdk_font_unref()
|
||||
</para>
|
||||
|
||||
@type: a value of type #GdkFontType which indicates
|
||||
whether this font is a single font or a fontset.
|
||||
@ascent: the maximum distance that the font, when drawn,
|
||||
ascends above the baseline.
|
||||
@descent: the maximum distance that the font, when drawn,
|
||||
descends below the baseline.
|
||||
|
||||
<!-- ##### ENUM GdkFontType ##### -->
|
||||
<para>
|
||||
Indicates the type of a font. The possible values
|
||||
are currently:
|
||||
</para>
|
||||
|
||||
@GDK_FONT_FONT: the font is a single font.
|
||||
@GDK_FONT_FONTSET: the font is a fontset.
|
||||
|
||||
<!-- ##### FUNCTION gdk_font_load ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@font_name:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_font_load_for_display ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@display:
|
||||
@font_name:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_fontset_load ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@fontset_name:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_fontset_load_for_display ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@display:
|
||||
@fontset_name:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_font_from_description ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@font_desc:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_font_from_description_for_display ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@display:
|
||||
@font_desc:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_font_get_display ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@font:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_font_ref ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@font:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_font_unref ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@font:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_font_id ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@font:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_font_equal ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@fonta:
|
||||
@fontb:
|
||||
@Returns:
|
||||
@@ -1,428 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
Graphics Contexts
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
Objects to encapsulate drawing properties
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
All drawing operations in GDK take a
|
||||
<firstterm>graphics context</firstterm> (GC) argument.
|
||||
A graphics context encapsulates information about
|
||||
the way things are drawn, such as the foreground
|
||||
color or line width. By using graphics contexts,
|
||||
the number of arguments to each drawing call is
|
||||
greatly reduced, and communication overhead is
|
||||
minimized, since identical arguments do not need
|
||||
to be passed repeatedly.
|
||||
</para>
|
||||
<para>
|
||||
Most values of a graphics context can be set at
|
||||
creation time by using gdk_gc_new_with_values(),
|
||||
or can be set one-by-one using functions such
|
||||
as gdk_gc_set_foreground(). A few of the values
|
||||
in the GC, such as the dash pattern, can only
|
||||
be set by the latter method.
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkGC ##### -->
|
||||
<para>
|
||||
The #GdkGC structure represents a graphics context.
|
||||
It is an opaque structure with no user-visible
|
||||
elements.
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkGCValues ##### -->
|
||||
<para>
|
||||
The #GdkGCValues structure holds a set of values used
|
||||
to create or modify a graphics context.
|
||||
</para>
|
||||
|
||||
@foreground: the foreground color. Note that gdk_gc_get_values()
|
||||
only sets the pixel value.
|
||||
@background: the background color. Note that gdk_gc_get_values()
|
||||
only sets the pixel value.
|
||||
@font: the default font.
|
||||
@function: the bitwise operation used when drawing.
|
||||
@fill: the fill style.
|
||||
@tile: the tile pixmap.
|
||||
@stipple: the stipple bitmap.
|
||||
@clip_mask: the clip mask bitmap.
|
||||
@subwindow_mode: the subwindow mode.
|
||||
@ts_x_origin: the x origin of the tile or stipple.
|
||||
@ts_y_origin: the y origin of the tile or stipple.
|
||||
@clip_x_origin: the x origin of the clip mask.
|
||||
@clip_y_origin: the y origin of the clip mask.
|
||||
@graphics_exposures: whether graphics exposures are enabled.
|
||||
@line_width: the line width.
|
||||
@line_style: the way dashed lines are drawn.
|
||||
@cap_style: the way the ends of lines are drawn.
|
||||
@join_style: the way joins between lines are drawn.
|
||||
|
||||
<!-- ##### ENUM GdkGCValuesMask ##### -->
|
||||
<para>
|
||||
A set of bit flags used to indicate which fields
|
||||
#GdkGCValues structure are set.
|
||||
</para>
|
||||
|
||||
@GDK_GC_FOREGROUND: the @foreground is set.
|
||||
@GDK_GC_BACKGROUND: the @background is set.
|
||||
@GDK_GC_FONT: the @font is set.
|
||||
@GDK_GC_FUNCTION: the @function is set.
|
||||
@GDK_GC_FILL: the @fill is set.
|
||||
@GDK_GC_TILE: the @tile is set.
|
||||
@GDK_GC_STIPPLE: the @stipple is set.
|
||||
@GDK_GC_CLIP_MASK: the @clip_mask is set.
|
||||
@GDK_GC_SUBWINDOW: the @subwindow_mode is set.
|
||||
@GDK_GC_TS_X_ORIGIN: the @ts_x_origin is set.
|
||||
@GDK_GC_TS_Y_ORIGIN: the @ts_y_origin is set.
|
||||
@GDK_GC_CLIP_X_ORIGIN: the @clip_x_origin is set.
|
||||
@GDK_GC_CLIP_Y_ORIGIN: the @clip_y_origin is set.
|
||||
@GDK_GC_EXPOSURES: the @graphics_exposures is set.
|
||||
@GDK_GC_LINE_WIDTH: the @line_width is set.
|
||||
@GDK_GC_LINE_STYLE: the @line_style is set.
|
||||
@GDK_GC_CAP_STYLE: the @cap_style is set.
|
||||
@GDK_GC_JOIN_STYLE: the @join_style is set.
|
||||
|
||||
<!-- ##### ENUM GdkFunction ##### -->
|
||||
<para>
|
||||
Determines how the bit values for the source pixels are combined with
|
||||
the bit values for destination pixels to produce the final result. The
|
||||
sixteen values here correspond to the 16 different possible 2x2 truth
|
||||
tables. Only a couple of these values are usually useful; for colored
|
||||
images, only %GDK_COPY, %GDK_XOR and %GDK_INVERT are generally
|
||||
useful. For bitmaps, %GDK_AND and %GDK_OR are also useful.
|
||||
</para>
|
||||
|
||||
@GDK_COPY: <literal>dst = src</literal>
|
||||
@GDK_INVERT: <literal>dst = NOT dst</literal>
|
||||
@GDK_XOR: <literal>dst = src XOR dst</literal>
|
||||
@GDK_CLEAR: <literal>dst = 0</literal>
|
||||
@GDK_AND: <literal>dst = dst AND src</literal>
|
||||
@GDK_AND_REVERSE: <literal>dst = src AND (NOT dst)</literal>
|
||||
@GDK_AND_INVERT: <literal>dst = (NOT src) AND dst</literal>
|
||||
@GDK_NOOP: <literal>dst = dst</literal>
|
||||
@GDK_OR: <literal>dst = src OR dst</literal>
|
||||
@GDK_EQUIV: <literal>dst = (NOT src) XOR dst</literal>
|
||||
@GDK_OR_REVERSE: <literal>dst = src OR (NOT dst)</literal>
|
||||
@GDK_COPY_INVERT: <literal>dst = NOT src</literal>
|
||||
@GDK_OR_INVERT: <literal>dst = (NOT src) OR dst</literal>
|
||||
@GDK_NAND: <literal>dst = (NOT src) OR (NOT dst)</literal>
|
||||
@GDK_NOR: <literal>dst = (NOT src) AND (NOT dst)</literal>
|
||||
@GDK_SET: <literal>dst = 1</literal>
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_new ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_new_with_values ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@values:
|
||||
@values_mask:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_get_screen ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_values ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@values:
|
||||
@values_mask:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_get_values ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@values:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_foreground ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@color:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_background ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@color:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_rgb_fg_color ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@color:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_rgb_bg_color ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@color:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_function ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@function:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_fill ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@fill:
|
||||
|
||||
|
||||
<!-- ##### ENUM GdkFill ##### -->
|
||||
<para>
|
||||
Determines how primitives are drawn.
|
||||
</para>
|
||||
|
||||
@GDK_SOLID: draw with the foreground color.
|
||||
@GDK_TILED: draw with a tiled pixmap.
|
||||
@GDK_STIPPLED: draw using the stipple bitmap. Pixels corresponding
|
||||
to bits in the stipple bitmap that are set will be drawn in the
|
||||
foreground color; pixels corresponding to bits that are
|
||||
not set will be left untouched.
|
||||
@GDK_OPAQUE_STIPPLED: draw using the stipple bitmap. Pixels corresponding
|
||||
to bits in the stipple bitmap that are set will be drawn in the
|
||||
foreground color; pixels corresponding to bits that are
|
||||
not set will be drawn with the background color.
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_tile ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@tile:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_stipple ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@stipple:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_ts_origin ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@x:
|
||||
@y:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_clip_origin ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@x:
|
||||
@y:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_clip_mask ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@mask:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_clip_rectangle ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@rectangle:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_clip_region ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@region:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_subwindow ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@mode:
|
||||
|
||||
|
||||
<!-- ##### ENUM GdkSubwindowMode ##### -->
|
||||
<para>
|
||||
Determines how drawing onto a window will affect child
|
||||
windows of that window.
|
||||
</para>
|
||||
|
||||
@GDK_CLIP_BY_CHILDREN: only draw onto the window itself.
|
||||
@GDK_INCLUDE_INFERIORS: draw onto the window and child windows.
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_exposures ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@exposures:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_line_attributes ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@line_width:
|
||||
@line_style:
|
||||
@cap_style:
|
||||
@join_style:
|
||||
|
||||
|
||||
<!-- ##### ENUM GdkLineStyle ##### -->
|
||||
<para>
|
||||
Determines how lines are drawn.
|
||||
</para>
|
||||
|
||||
@GDK_LINE_SOLID: lines are drawn solid.
|
||||
@GDK_LINE_ON_OFF_DASH: even segments are drawn; odd segments are not drawn.
|
||||
@GDK_LINE_DOUBLE_DASH: even segments are normally. Odd segments are drawn
|
||||
in the background color if the fill style is %GDK_SOLID, or in the background
|
||||
color masked by the stipple if the fill style is %GDK_STIPPLED.
|
||||
|
||||
<!-- ##### ENUM GdkCapStyle ##### -->
|
||||
<para>
|
||||
Determines how the end of lines are drawn.
|
||||
</para>
|
||||
|
||||
@GDK_CAP_NOT_LAST: the same as %GDK_CAP_BUTT for lines of non-zero width.
|
||||
for zero width lines, the final point on the line will not be drawn.
|
||||
@GDK_CAP_BUTT: the ends of the lines are drawn squared off and extending
|
||||
to the coordinates of the end point.
|
||||
@GDK_CAP_ROUND: the ends of the lines are drawn as semicircles with the
|
||||
diameter equal to the line width and centered at the end point.
|
||||
@GDK_CAP_PROJECTING: the ends of the lines are drawn squared off and extending
|
||||
half the width of the line beyond the end point.
|
||||
|
||||
<!-- ##### ENUM GdkJoinStyle ##### -->
|
||||
<para>
|
||||
Determines how the joins between segments of a polygon are drawn.
|
||||
</para>
|
||||
|
||||
@GDK_JOIN_MITER: the sides of each line are extended to meet at an angle.
|
||||
@GDK_JOIN_ROUND: the sides of the two lines are joined by a circular arc.
|
||||
@GDK_JOIN_BEVEL: the sides of the two lines are joined by a straight line which
|
||||
makes an equal angle with each line.
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_dashes ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@dash_offset:
|
||||
@dash_list:
|
||||
@n:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_copy ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@dst_gc:
|
||||
@src_gc:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_set_colormap ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@colormap:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_get_colormap ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_gc_offset ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@x_offset:
|
||||
@y_offset:
|
||||
|
||||
|
||||
@@ -190,6 +190,15 @@ of an X display. All its fields are private and should not be accessed directly.
|
||||
@display:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_display_is_closed ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@display:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_display_list_devices ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -113,24 +113,6 @@ when GDK gets multihead support.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_screen_get_rgb_colormap ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@screen:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_screen_get_rgb_visual ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@screen:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_screen_get_rgba_colormap ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -1,219 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
Images
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
A client-side area for bit-mapped graphics
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
The #GdkImage type represents an area for drawing graphics.
|
||||
It has now been superceded to a large extent by the much more flexible
|
||||
<link linkend="gdk-GdkRGB">GdkRGB</link> functions.
|
||||
</para>
|
||||
<para>
|
||||
To create an empty #GdkImage use gdk_image_new().
|
||||
To create an image from part of a #GdkWindow use gdk_drawable_get_image().
|
||||
</para>
|
||||
<para>
|
||||
The image can be manipulated with gdk_image_get_pixel() and
|
||||
gdk_image_put_pixel(), or alternatively by changing the actual pixel data.
|
||||
Though manipulating the pixel data requires complicated code to cope with
|
||||
the different formats that may be used.
|
||||
</para>
|
||||
<para>
|
||||
To draw a #GdkImage in a #GdkWindow or #GdkPixmap use gdk_draw_image().
|
||||
</para>
|
||||
<para>
|
||||
To destroy a #GdkImage use g_object_unref().
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><link linkend="gdk-Bitmaps-and-Pixmaps">Bitmaps and Pixmaps</link></term>
|
||||
<listitem><para>
|
||||
Graphics which are stored on the X Windows server.
|
||||
Since these are stored on the server they can be drawn very quickly, and all
|
||||
of the <link linkend="gdk-Drawing-Primitives">Drawing Primitives</link> can be
|
||||
used to draw on them. Their main disadvantage is that manipulating individual
|
||||
pixels can be very slow.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><link linkend="gdk-GdkRGB">GdkRGB</link></term>
|
||||
<listitem><para>
|
||||
Built on top of #GdkImage, this provides much more functionality,
|
||||
including the dithering of colors to produce better output on low-color
|
||||
displays.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkImage ##### -->
|
||||
<para>
|
||||
The #GdkImage struct contains information on the image and the pixel data.
|
||||
</para>
|
||||
|
||||
@parent_instance: the parent instance
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_new ##### -->
|
||||
<para>
|
||||
Creates a new #GdkImage.
|
||||
</para>
|
||||
|
||||
@type: the type of the #GdkImage, one of %GDK_IMAGE_NORMAL, %GDK_IMAGE_SHARED
|
||||
and %GDK_IMAGE_FASTEST. %GDK_IMAGE_FASTEST is probably the best choice, since
|
||||
it will try creating a %GDK_IMAGE_SHARED image first and if that fails it will
|
||||
then use %GDK_IMAGE_NORMAL.
|
||||
@visual: the #GdkVisual to use for the image.
|
||||
@width: the width of the image in pixels.
|
||||
@height: the height of the image in pixels.
|
||||
@Returns: a new #GdkImage, or %NULL if the image could not be created.
|
||||
|
||||
|
||||
<!-- ##### ENUM GdkImageType ##### -->
|
||||
<para>
|
||||
Specifies the type of a #GdkImage.
|
||||
</para>
|
||||
|
||||
@GDK_IMAGE_NORMAL: The original X image type, which is quite slow since the
|
||||
image has to be transferred from the client to the server to display it.
|
||||
@GDK_IMAGE_SHARED: A faster image type, which uses shared memory to transfer
|
||||
the image data between client and server. However this will only be available
|
||||
if client and server are on the same machine and the shared memory extension
|
||||
is supported by the server.
|
||||
@GDK_IMAGE_FASTEST: Specifies that %GDK_IMAGE_SHARED should be tried first,
|
||||
and if that fails then %GDK_IMAGE_NORMAL will be used.
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_colormap ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_set_colormap ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@colormap:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_bits_per_pixel ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_bytes_per_pixel ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_bytes_per_line ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_byte_order ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_depth ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_height ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_image_type ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_visual ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_width ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_put_pixel ##### -->
|
||||
<para>
|
||||
Sets a pixel in a #GdkImage to a given pixel value.
|
||||
</para>
|
||||
|
||||
@image: a #GdkImage.
|
||||
@x: the x coordinate of the pixel to set.
|
||||
@y: the y coordinate of the pixel to set.
|
||||
@pixel: the pixel value to set.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_image_get_pixel ##### -->
|
||||
<para>
|
||||
Gets a pixel value at a specified position in a #GdkImage.
|
||||
</para>
|
||||
|
||||
@image: a #GdkImage.
|
||||
@x: the x coordinate of the pixel to get.
|
||||
@y: the y coordinate of the pixel to get.
|
||||
@Returns: the pixel value at the given position.
|
||||
|
||||
|
||||
@@ -238,6 +238,15 @@ Returns: %PANGO_DIRECTION_LTR or %PANGO_DIRECTION_RTL.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_keymap_get_num_lock_state ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@keymap:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_keymap_add_virtual_modifiers ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -25,11 +25,10 @@ linkend="PANGO-SCALE-CAPS">PANGO_SCALE</link> or the PANGO_PIXELS() macro.)
|
||||
</para>
|
||||
<para>
|
||||
Rendering a Pango layout is done most simply with gdk_draw_layout();
|
||||
you can also draw pieces of the layout with gdk_draw_layout() or
|
||||
gdk_draw_glyphs(). #GdkPangoRenderer is a subclass of #PangoRenderer
|
||||
that is used internally to implement these functions. Using it
|
||||
directly or subclassing it can be useful in some cases. See the
|
||||
#GdkPangoRenderer documentation for details.
|
||||
you can also draw pieces of the layout with gdk_draw_layout().
|
||||
#GdkPangoRenderer is a subclass of #PangoRenderer that is used internally
|
||||
to implement these functions. Using it directly or subclassing it can be
|
||||
useful in some cases. See the #GdkPangoRenderer documentation for details.
|
||||
</para>
|
||||
<example id="rotated-example">
|
||||
<title>Using #GdkPangoRenderer to draw transformed text</title>
|
||||
@@ -135,150 +134,6 @@ g_object_unref (gc);
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkPangoRenderer ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### ARG GdkPangoRenderer:screen ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### STRUCT GdkPangoRendererClass ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_renderer_new ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@screen:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_renderer_get_default ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@screen:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_renderer_set_drawable ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gdk_renderer:
|
||||
@drawable:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_renderer_set_gc ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gdk_renderer:
|
||||
@gc:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_renderer_set_stipple ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gdk_renderer:
|
||||
@part:
|
||||
@stipple:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_renderer_set_override_color ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gdk_renderer:
|
||||
@part:
|
||||
@color:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_context_get ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@void:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_context_get_for_screen ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@screen:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkPangoAttrEmbossed ##### -->
|
||||
<para>
|
||||
A Pango text attribute containing a embossed bitmap to be used when
|
||||
rendering the text.
|
||||
</para>
|
||||
|
||||
@attr: the #PangoAttribute.
|
||||
@embossed: the embossed bitmap.
|
||||
|
||||
<!-- ##### STRUCT GdkPangoAttrEmbossColor ##### -->
|
||||
<para>
|
||||
A Pango text attribute specifying the color to emboss text with.
|
||||
</para>
|
||||
|
||||
@attr: the #PangoAttribute
|
||||
@color: the color
|
||||
|
||||
<!-- ##### STRUCT GdkPangoAttrStipple ##### -->
|
||||
<para>
|
||||
A Pango text attribute containing a stipple bitmap to be used when
|
||||
rendering the text.
|
||||
</para>
|
||||
|
||||
@attr: the #PangoAttribute.
|
||||
@stipple: the stipple bitmap.
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_attr_emboss_color_new ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@color:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_attr_embossed_new ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@embossed:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_attr_stipple_new ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@stipple:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pango_layout_get_clip_region ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -83,14 +83,13 @@ pixbufs, see the #GdkPixbuf API documentation.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pixbuf_get_from_image ##### -->
|
||||
<!-- ##### FUNCTION gdk_pixbuf_get_from_surface ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@dest:
|
||||
@src:
|
||||
@cmap:
|
||||
@surface:
|
||||
@src_x:
|
||||
@src_y:
|
||||
@dest_x:
|
||||
|
||||
@@ -8,7 +8,7 @@ Offscreen drawables
|
||||
<para>
|
||||
Pixmaps are offscreen drawables. They can be drawn upon with the
|
||||
standard drawing primitives, then copied to another drawable (such as
|
||||
a #GdkWindow) with gdk_draw_drawable(). The depth of a pixmap
|
||||
a #GdkWindow). The depth of a pixmap
|
||||
is the number of bits per pixels. Bitmaps are simply pixmaps
|
||||
with a depth of 1. (That is, they are monochrome bitmaps - each
|
||||
pixel can be either on or off).
|
||||
@@ -49,78 +49,6 @@ for the new pixmap. Can be %NULL if @depth is specified,
|
||||
@Returns: the #GdkPixmap
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_bitmap_create_from_data ##### -->
|
||||
<para>
|
||||
Creates a new bitmap from data in XBM format.
|
||||
</para>
|
||||
|
||||
@drawable: a #GdkDrawable, used to determine default values
|
||||
for the new pixmap. Can be %NULL, in which case the root
|
||||
window is used.
|
||||
@data: a pointer to the XBM data.
|
||||
@width: the width of the new pixmap in pixels.
|
||||
@height: the height of the new pixmap in pixels.
|
||||
@Returns: the #GdkBitmap
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pixmap_create_from_data ##### -->
|
||||
<para>
|
||||
Create a two-color pixmap from data in XBM data.
|
||||
</para>
|
||||
|
||||
@drawable: a #GdkDrawable, used to determine default values
|
||||
for the new pixmap. Can be %NULL, if the depth is given.
|
||||
@data: a pointer to the data.
|
||||
@width: the width of the new pixmap in pixels.
|
||||
@height: the height of the new pixmap in pixels.
|
||||
@depth: the depth (number of bits per pixel) of the new pixmap.
|
||||
@fg: the foreground color.
|
||||
@bg: the background color.
|
||||
@Returns: the #GdkPixmap
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pixmap_create_from_xpm ##### -->
|
||||
|
||||
|
||||
@drawable:
|
||||
@mask:
|
||||
@transparent_color:
|
||||
@filename:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pixmap_colormap_create_from_xpm ##### -->
|
||||
|
||||
|
||||
@drawable:
|
||||
@colormap:
|
||||
@mask:
|
||||
@transparent_color:
|
||||
@filename:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pixmap_create_from_xpm_d ##### -->
|
||||
|
||||
|
||||
@drawable:
|
||||
@mask:
|
||||
@transparent_color:
|
||||
@data:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_pixmap_colormap_create_from_xpm_d ##### -->
|
||||
|
||||
|
||||
@drawable:
|
||||
@colormap:
|
||||
@mask:
|
||||
@transparent_color:
|
||||
@data:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### TYPEDEF GdkBitmap ##### -->
|
||||
<para>
|
||||
An opaque structure representing an offscreen drawable of depth
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
Points, Rectangles and Regions
|
||||
Points and Rectangles
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
Simple graphical data types
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
GDK provides the #GdkPoint, #GdkRectangle, #GdkRegion and #GdkSpan data types
|
||||
for representing pixels and sets of pixels on the screen.
|
||||
GDK provides the #GdkPoint and #GdkRectangle data types for representing pixels
|
||||
and sets of pixels on the screen. Together with Cairo's #cairo_region_t data
|
||||
type, they make up the central types for representing graphical data.
|
||||
</para>
|
||||
<para>
|
||||
#GdkPoint is a simple structure containing an x and y coordinate of a point.
|
||||
@@ -19,13 +20,7 @@ gdk_rectangle_intersect(). To find the union of two rectangles use
|
||||
gdk_rectangle_union().
|
||||
</para>
|
||||
<para>
|
||||
#GdkRegion is an opaque data type holding a set of arbitrary pixels, and is
|
||||
usually used for clipping graphical operations (see gdk_gc_set_clip_region()).
|
||||
</para>
|
||||
<para>
|
||||
#GdkSpan is a structure holding a spanline. A spanline is a horizontal line that
|
||||
is one pixel wide. It is mainly used when rasterizing other graphics primitives.
|
||||
It can be intersected to regions by using gdk_region_spans_intersect_foreach().
|
||||
#cairo_region_t is usually used for managing clipping of graphical operations.
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
@@ -47,15 +42,12 @@ Defines the x and y coordinates of a point.
|
||||
@x: the x coordinate of the point.
|
||||
@y: the y coordinate of the point.
|
||||
|
||||
<!-- ##### STRUCT GdkRectangle ##### -->
|
||||
<!-- ##### TYPEDEF GdkRectangle ##### -->
|
||||
<para>
|
||||
Defines the position and size of a rectangle.
|
||||
Defines the position and size of a rectangle. It is identical to
|
||||
#cairo_rectangle_int_t.
|
||||
</para>
|
||||
|
||||
@x: the x coordinate of the left edge of the rectangle.
|
||||
@y: the y coordinate of the top of the rectangle.
|
||||
@width: the width of the rectangle.
|
||||
@height: the height of the rectangle.
|
||||
|
||||
<!-- ##### FUNCTION gdk_rectangle_intersect ##### -->
|
||||
<para>
|
||||
@@ -78,239 +70,3 @@ Defines the position and size of a rectangle.
|
||||
@dest:
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkRegion ##### -->
|
||||
<para>
|
||||
A GdkRegion represents a set of pixels on the screen.
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_new ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@void:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_polygon ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@points:
|
||||
@n_points:
|
||||
@fill_rule:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### ENUM GdkFillRule ##### -->
|
||||
<para>
|
||||
The method for determining which pixels are included in a region, when
|
||||
creating a #GdkRegion from a polygon.
|
||||
The fill rule is only relevant for polygons which overlap themselves.
|
||||
</para>
|
||||
|
||||
@GDK_EVEN_ODD_RULE: areas which are overlapped an odd number of times are
|
||||
included in the region, while areas overlapped an even number of times are not.
|
||||
@GDK_WINDING_RULE: overlapping areas are always included.
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_copy ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_rectangle ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@rectangle:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_destroy ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_get_clipbox ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@rectangle:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_get_rectangles ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@rectangles:
|
||||
@n_rectangles:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_empty ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_equal ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region1:
|
||||
@region2:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_rect_equal ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@rectangle:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_point_in ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@x:
|
||||
@y:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_rect_in ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@rectangle:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### ENUM GdkOverlapType ##### -->
|
||||
<para>
|
||||
Specifies the possible values returned by gdk_region_rect_in().
|
||||
</para>
|
||||
|
||||
@GDK_OVERLAP_RECTANGLE_IN: if the rectangle is inside the #GdkRegion.
|
||||
@GDK_OVERLAP_RECTANGLE_OUT: if the rectangle is outside the #GdkRegion.
|
||||
@GDK_OVERLAP_RECTANGLE_PART: if the rectangle is partly inside the #GdkRegion.
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_offset ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@dx:
|
||||
@dy:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_shrink ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@dx:
|
||||
@dy:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_union_with_rect ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@rect:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_intersect ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@source1:
|
||||
@source2:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_union ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@source1:
|
||||
@source2:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_subtract ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@source1:
|
||||
@source2:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_xor ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@source1:
|
||||
@source2:
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkSpan ##### -->
|
||||
<para>
|
||||
A GdkSpan represents a horizontal line of pixels starting
|
||||
at the pixel with coordinates @x, @y and ending before @x + @width, @y.
|
||||
</para>
|
||||
|
||||
@x: x coordinate of the first pixel.
|
||||
@y: y coordinate of the first pixel.
|
||||
@width: number of pixels in the span.
|
||||
|
||||
<!-- ##### USER_FUNCTION GdkSpanFunc ##### -->
|
||||
<para>
|
||||
This defines the type of the function passed to
|
||||
gdk_region_spans_intersect_foreach().
|
||||
</para>
|
||||
|
||||
@span: a #GdkSpan.
|
||||
@data: the user data passed to gdk_region_spans_intersect_foreach().
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_region_spans_intersect_foreach ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@region:
|
||||
@spans:
|
||||
@n_spans:
|
||||
@sorted:
|
||||
@function:
|
||||
@data:
|
||||
|
||||
|
||||
|
||||
@@ -1,410 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
GdkRGB
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
Renders RGB, grayscale, or indexed image data to a GdkDrawable
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
|
||||
<para>
|
||||
GdkRGB is a low-level module which renders RGB, grayscale, and indexed
|
||||
colormap images to a #GdkDrawable. It does this as efficiently as
|
||||
possible, handling issues such as colormaps, visuals, dithering,
|
||||
temporary buffers, and so on. Most code should use the higher-level
|
||||
#GdkPixbuf features in place of this module; for example,
|
||||
gdk_draw_pixbuf() uses GdkRGB in its implementation.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GdkRGB allocates a color cube to use when rendering images. You can
|
||||
set the threshold for installing colormaps with
|
||||
gdk_rgb_set_min_colors(). The default is 5x5x5 (125). If a colorcube
|
||||
of this size or larger can be allocated in the default colormap, then
|
||||
that's done. Otherwise, GdkRGB creates its own private colormap.
|
||||
Setting it to 0 means that it always tries to use the default
|
||||
colormap, and setting it to 216 means that it always creates a private
|
||||
one if it cannot allocate the 6x6x6 colormap in the default. If you
|
||||
always want a private colormap (to avoid consuming too many colormap
|
||||
entries for other apps, say), you can use
|
||||
<literal>gdk_rgb_set_install(TRUE)</literal>.
|
||||
Setting the value greater than 216 exercises a bug in older versions
|
||||
of GdkRGB. Note, however, that setting it to 0 doesn't let you get
|
||||
away with ignoring the colormap and visual - a colormap is always
|
||||
created in grayscale and direct color modes, and the visual is changed
|
||||
in cases where a "better" visual than the default is available.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If GDK is built with the Sun mediaLib library, the GdkRGB functions are
|
||||
accelerated using mediaLib, which provides hardware acceleration on Intel,
|
||||
AMD, and Sparc chipsets. If desired, mediaLib support can be turned off
|
||||
by setting the GDK_DISABLE_MEDIALIB environment variable.
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title>A simple example program using GdkRGB</title>
|
||||
<programlisting>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#define IMAGE_WIDTH 256
|
||||
#define IMAGE_HEIGHT 256
|
||||
|
||||
guchar rgbbuf[IMAGE_WIDTH * IMAGE_HEIGHT * 3];
|
||||
|
||||
gboolean on_darea_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
gpointer user_data);
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
GtkWidget *window, *darea;
|
||||
gint x, y;
|
||||
guchar *pos;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
darea = gtk_drawing_area_new (<!-- -->);
|
||||
gtk_widget_set_size_request (darea, IMAGE_WIDTH, IMAGE_HEIGHT);
|
||||
gtk_container_add (GTK_CONTAINER (window), darea);
|
||||
gtk_signal_connect (GTK_OBJECT (darea), "expose-event",
|
||||
GTK_SIGNAL_FUNC (on_darea_expose), NULL);
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
/* Set up the RGB buffer. */
|
||||
pos = rgbbuf;
|
||||
for (y = 0; y < IMAGE_HEIGHT; y++)
|
||||
{
|
||||
for (x = 0; x < IMAGE_WIDTH; x++)
|
||||
{
|
||||
*pos++ = x - x % 32; /* Red. */
|
||||
*pos++ = (x / 32) * 4 + y - y % 32; /* Green. */
|
||||
*pos++ = y - y % 32; /* Blue. */
|
||||
}
|
||||
}
|
||||
|
||||
gtk_main (<!-- -->);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
gboolean
|
||||
on_darea_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
gdk_draw_rgb_image (widget->window, widget->style->fg_gc[GTK_STATE_NORMAL],
|
||||
0, 0, IMAGE_WIDTH, IMAGE_HEIGHT,
|
||||
GDK_RGB_DITHER_MAX, rgbbuf, IMAGE_WIDTH * 3);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>#GdkColor</term>
|
||||
<listitem><para>The underlying GDK mechanism for allocating
|
||||
colors.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>#GdkPixbuf and gdk_draw_pixbuf()</term>
|
||||
<listitem><para>Higher-level image handling.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_rgb_image ##### -->
|
||||
<para>
|
||||
Draws an RGB image in the drawable. This is the core GdkRGB
|
||||
function, and likely the only one you will need to use.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The @rowstride parameter allows for lines to be aligned more flexibly.
|
||||
For example, lines may be allocated to begin on 32-bit boundaries,
|
||||
even if the width of the rectangle is odd. Rowstride is also useful
|
||||
when drawing a subrectangle of a larger image in memory. Finally, to
|
||||
replicate the same line a number of times, the trick of setting
|
||||
@rowstride to 0 is allowed.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
In general, for 0 <= i < @width and 0 <= j < height,
|
||||
the pixel (x + i, y + j) is colored with red value @rgb_buf[@j *
|
||||
@rowstride + @i * 3], green value @rgb_buf[@j * @rowstride + @i * 3 +
|
||||
1], and blue value @rgb_buf[@j * @rowstride + @i * 3 + 2].
|
||||
</para>
|
||||
|
||||
@drawable: The #GdkDrawable to draw in (usually a #GdkWindow).
|
||||
@gc: The graphics context (all GDK drawing operations require one; its
|
||||
contents are ignored).
|
||||
@x: The x coordinate of the top-left corner in the drawable.
|
||||
@y: The y coordinate of the top-left corner in the drawable.
|
||||
@width: The width of the rectangle to be drawn.
|
||||
@height: The height of the rectangle to be drawn.
|
||||
@dith: A #GdkRgbDither value, selecting the desired dither mode.
|
||||
@rgb_buf: The pixel data, represented as packed 24-bit data.
|
||||
@rowstride: The number of bytes from the start of one row in @rgb_buf to the
|
||||
start of the next.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_rgb_image_dithalign ##### -->
|
||||
<para>
|
||||
Draws an RGB image in the drawable, with an adjustment for dither alignment.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This function is useful when drawing dithered images into a window
|
||||
that may be scrolled. Pixel (x, y) will be drawn dithered as if its
|
||||
actual location is (x + @xdith, y + @ydith). Thus, if you draw an
|
||||
image into a window using zero dither alignment, then scroll up one
|
||||
pixel, subsequent draws to the window should have @ydith = 1.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Setting the dither alignment correctly allows updating of small parts
|
||||
of the screen while avoiding visible "seams" between the different
|
||||
dither textures.
|
||||
</para>
|
||||
|
||||
@drawable: The #GdkDrawable to draw in (usually a #GdkWindow).
|
||||
@gc: The graphics context.
|
||||
@x: The x coordinate of the top-left corner in the drawable.
|
||||
@y: The y coordinate of the top-left corner in the drawable.
|
||||
@width: The width of the rectangle to be drawn.
|
||||
@height: The height of the rectangle to be drawn.
|
||||
@dith: A #GdkRgbDither value, selecting the desired dither mode.
|
||||
@rgb_buf: The pixel data, represented as packed 24-bit data.
|
||||
@rowstride: The number of bytes from the start of one row in @rgb_buf to the
|
||||
start of the next.
|
||||
@xdith: An x offset for dither alignment.
|
||||
@ydith: A y offset for dither alignment.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_indexed_image ##### -->
|
||||
<para>
|
||||
Draws an indexed image in the drawable, using a #GdkRgbCmap to assign
|
||||
actual colors to the color indices.
|
||||
</para>
|
||||
|
||||
@drawable: The #GdkDrawable to draw in (usually a #GdkWindow).
|
||||
@gc: The graphics context.
|
||||
@x: The x coordinate of the top-left corner in the drawable.
|
||||
@y: The y coordinate of the top-left corner in the drawable.
|
||||
@width: The width of the rectangle to be drawn.
|
||||
@height: The height of the rectangle to be drawn.
|
||||
@dith: A #GdkRgbDither value, selecting the desired dither mode.
|
||||
@buf: The pixel data, represented as 8-bit color indices.
|
||||
@rowstride: The number of bytes from the start of one row in @buf to the
|
||||
start of the next.
|
||||
@cmap: The #GdkRgbCmap used to assign colors to the color indices.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_gray_image ##### -->
|
||||
<para>
|
||||
Draws a grayscale image in the drawable.
|
||||
|
||||
</para>
|
||||
|
||||
@drawable: The #GdkDrawable to draw in (usually a #GdkWindow).
|
||||
@gc: The graphics context.
|
||||
@x: The x coordinate of the top-left corner in the drawable.
|
||||
@y: The y coordinate of the top-left corner in the drawable.
|
||||
@width: The width of the rectangle to be drawn.
|
||||
@height: The height of the rectangle to be drawn.
|
||||
@dith: A #GdkRgbDither value, selecting the desired dither mode.
|
||||
@buf: The pixel data, represented as 8-bit gray values.
|
||||
@rowstride: The number of bytes from the start of one row in @buf to the
|
||||
start of the next.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_rgb_32_image ##### -->
|
||||
<para>
|
||||
Draws a padded RGB image in the drawable. The image is stored as one
|
||||
pixel per 32-bit word. It is laid out as a red byte, a green byte, a
|
||||
blue byte, and a padding byte.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
It's unlikely that this function will give significant performance
|
||||
gains in practice. In my experience, the performance gain from having
|
||||
pixels aligned to 32-bit boundaries is cancelled out by the increased
|
||||
memory bandwidth.
|
||||
</para>
|
||||
|
||||
@drawable: The #GdkDrawable to draw in (usually a #GdkWindow).
|
||||
@gc: The graphics context.
|
||||
@x: The x coordinate of the top-left corner in the drawable.
|
||||
@y: The y coordinate of the top-left corner in the drawable.
|
||||
@width: The width of the rectangle to be drawn.
|
||||
@height: The height of the rectangle to be drawn.
|
||||
@dith: A #GdkRgbDither value, selecting the desired dither mode.
|
||||
@buf: The pixel data, represented as padded 32-bit data.
|
||||
@rowstride: The number of bytes from the start of one row in @buf to the
|
||||
start of the next.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_draw_rgb_32_image_dithalign ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@drawable:
|
||||
@gc:
|
||||
@x:
|
||||
@y:
|
||||
@width:
|
||||
@height:
|
||||
@dith:
|
||||
@buf:
|
||||
@rowstride:
|
||||
@xdith:
|
||||
@ydith:
|
||||
|
||||
|
||||
<!-- ##### ENUM GdkRgbDither ##### -->
|
||||
<para>
|
||||
Selects whether or not GdkRGB applies dithering
|
||||
to the image on display.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Since GdkRGB currently only handles images with 8 bits per component,
|
||||
dithering on 24 bit per pixel displays is a moot point.
|
||||
</para>
|
||||
|
||||
@GDK_RGB_DITHER_NONE: Never use dithering.
|
||||
@GDK_RGB_DITHER_NORMAL: Use dithering in 8 bits per pixel (and below)
|
||||
only.
|
||||
@GDK_RGB_DITHER_MAX: Use dithering in 16 bits per pixel and below.
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_cmap_new ##### -->
|
||||
<para>
|
||||
Creates a new #GdkRgbCmap structure. The cmap maps color indexes to
|
||||
RGB colors. If @n_colors is less than 256, then images containing
|
||||
color values greater than or equal to @n_colors will produce undefined
|
||||
results, including possibly segfaults.
|
||||
</para>
|
||||
|
||||
@colors: The colors, represented as 0xRRGGBB integer values.
|
||||
@n_colors: The number of colors in the cmap.
|
||||
@Returns: The newly created #GdkRgbCmap
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_cmap_free ##### -->
|
||||
<para>
|
||||
Frees the memory associated with a #GdkRgbCmap created by gdk_rgb_cmap_new().
|
||||
</para>
|
||||
|
||||
@cmap: The #GdkRgbCmap to free.
|
||||
|
||||
|
||||
<!-- ##### STRUCT GdkRgbCmap ##### -->
|
||||
<para>
|
||||
A private data structure which maps color indices to actual RGB
|
||||
colors. This is used only for gdk_draw_indexed_image().
|
||||
</para>
|
||||
|
||||
@colors: The colors, represented as 0xRRGGBB integer values.
|
||||
@n_colors: The number of colors in the cmap.
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_find_color ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@colormap:
|
||||
@color:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_set_install ##### -->
|
||||
<para>
|
||||
If @install is %TRUE, directs GdkRGB to always install a new "private"
|
||||
colormap rather than trying to find a best fit with the colors already
|
||||
allocated. Ordinarily, GdkRGB will install a colormap only if a
|
||||
sufficient cube cannot be allocated.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
A private colormap has more colors, leading to better quality display,
|
||||
but also leads to the dreaded "colormap flashing" effect.
|
||||
</para>
|
||||
|
||||
@install: %TRUE to set install mode.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_set_min_colors ##### -->
|
||||
<para>
|
||||
Sets the minimum number of colors for the color cube. Generally,
|
||||
GdkRGB tries to allocate the largest color cube it can. If it can't
|
||||
allocate a color cube at least as large as @min_colors, it installs a
|
||||
private colormap.
|
||||
</para>
|
||||
|
||||
@min_colors: The minimum number of colors accepted.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_get_visual ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@void:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_get_colormap ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@void:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_ditherable ##### -->
|
||||
<para>
|
||||
Determines whether the preferred visual is ditherable. This function may be
|
||||
useful for presenting a user interface choice to the user about which
|
||||
dither mode is desired; if the display is not ditherable, it may make
|
||||
sense to gray out or hide the corresponding UI widget.
|
||||
</para>
|
||||
|
||||
@void:
|
||||
@Returns: %TRUE if the preferred visual is ditherable.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_colormap_ditherable ##### -->
|
||||
<para>
|
||||
Determines whether the visual associated with @cmap is ditherable. This
|
||||
function may be useful for presenting a user interface choice to the user
|
||||
about which dither mode is desired; if the display is not ditherable, it may
|
||||
make sense to gray out or hide the corresponding UI widget.
|
||||
</para>
|
||||
|
||||
@cmap: a #GdkColormap
|
||||
@Returns: %TRUE if the visual associated with @cmap is ditherable.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_rgb_set_verbose ##### -->
|
||||
<para>
|
||||
Sets the "verbose" flag. This is generally only useful for debugging.
|
||||
</para>
|
||||
|
||||
@verbose: %TRUE if verbose messages are desired.
|
||||
|
||||
|
||||
@@ -17,14 +17,6 @@ of an RGB pixel may be in the top 8 bits of the pixel, or may be in the lower
|
||||
4 bits.
|
||||
</para>
|
||||
<para>
|
||||
Usually you can avoid thinking about visuals in GTK+. Visuals are useful to
|
||||
interpret the contents of a #GdkImage, but you should avoid #GdkImage precisely
|
||||
because its contents depend on the display hardware; use #GdkPixbuf instead, for
|
||||
all but the most low-level purposes. Also, anytime you provide a #GdkColormap,
|
||||
the visual is implied as part of the colormap (gdk_colormap_get_visual()), so
|
||||
you won't have to provide a visual in addition.
|
||||
</para>
|
||||
<para>
|
||||
There are several standard visuals. The visual returned
|
||||
by gdk_visual_get_system() is the system's default
|
||||
visual. gdk_rgb_get_visual() return the visual most
|
||||
@@ -48,7 +40,7 @@ then %GDK_VISUAL_STATIC_GRAY.
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
#GdkImage, #GdkColormap, #GdkRGB
|
||||
#GdkColormap
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
@@ -97,33 +97,6 @@ Returns the X resource (window or pixmap) belonging to a #GdkDrawable.
|
||||
@Returns: the ID of @win's X resource.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_IMAGE_XDISPLAY ##### -->
|
||||
<para>
|
||||
Returns the display of a #GdkImage.
|
||||
</para>
|
||||
|
||||
@image: a #GdkImage.
|
||||
@Returns: an Xlib <type>Display*</type>.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_IMAGE_XIMAGE ##### -->
|
||||
<para>
|
||||
Returns the X image belonging to a #GdkImage.
|
||||
</para>
|
||||
|
||||
@image: a #GdkImage.
|
||||
@Returns: an <type>XImage*</type>.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_GC_XDISPLAY ##### -->
|
||||
<para>
|
||||
Returns the display of a #GdkGC.
|
||||
</para>
|
||||
|
||||
@gc: a #GdkGC.
|
||||
@Returns: an Xlib <type>Display*</type>.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_COLORMAP_XDISPLAY ##### -->
|
||||
<para>
|
||||
Returns the display of a #GdkColormap.
|
||||
@@ -179,24 +152,6 @@ Returns the X visual belonging to a #GdkVisual.
|
||||
@Returns: an Xlib <type>Visual*</type>.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_FONT_XDISPLAY ##### -->
|
||||
<para>
|
||||
Returns the display of a #GdkFont.
|
||||
</para>
|
||||
|
||||
@font: a #GdkFont.
|
||||
@Returns: an Xlib <type>Display*</type>.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_FONT_XFONT ##### -->
|
||||
<para>
|
||||
Returns the X font belonging to a #GdkFont.
|
||||
</para>
|
||||
|
||||
@font: a #GdkFont.
|
||||
@Returns: an Xlib <type>XFontStruct*</type> or an <type>XFontSet</type>.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_CURSOR_XCURSOR ##### -->
|
||||
<para>
|
||||
Returns the X cursor belonging to a #GdkCursor.
|
||||
@@ -215,24 +170,6 @@ Returns the display of a #GdkCursor.
|
||||
@Returns: an Xlib <type>Display*</type>.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_GC_XGC ##### -->
|
||||
<para>
|
||||
Returns the X GC of a #GdkGC.
|
||||
</para>
|
||||
|
||||
@gc: a #GdkGC.
|
||||
@Returns: an Xlib <type>GC</type>.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_GC_GET_XGC ##### -->
|
||||
<para>
|
||||
Returns the X GC of a #GdkGC.
|
||||
</para>
|
||||
|
||||
@gc: a #GdkGC.
|
||||
@Returns: an Xlib <type>GC</type>.
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_WINDOW_XWINDOW ##### -->
|
||||
<para>
|
||||
Another name for GDK_DRAWABLE_XID().
|
||||
@@ -355,26 +292,6 @@ Another name for GDK_DRAWABLE_XID().
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### MACRO gdk_font_lookup ##### -->
|
||||
<para>
|
||||
Obtains the #GdkFont for the given Xlib font ID, or %NULL if no #GdkFont has
|
||||
been created for @xid.
|
||||
</para>
|
||||
|
||||
@xid: an Xlib font ID
|
||||
|
||||
|
||||
<!-- ##### MACRO gdk_font_lookup_for_display ##### -->
|
||||
<para>
|
||||
Obtains the #GdkFont for the given Xlib font ID on @display, or %NULL if no
|
||||
#GdkFont has been created for @xid.
|
||||
</para>
|
||||
|
||||
@display: a #GdkDisplay
|
||||
@xid: an Xlib font ID
|
||||
Since: 2.2
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_lookup_xdisplay ##### -->
|
||||
<para>
|
||||
|
||||
@@ -595,51 +512,6 @@ Since: 2.2
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_font_get_name ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@font:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_font_get_xdisplay ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@font:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_font_get_xfont ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@font:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_gc_get_xdisplay ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_gc_get_xgc ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@gc:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_get_default_root_xwindow ##### -->
|
||||
<para>
|
||||
|
||||
@@ -675,24 +547,6 @@ Since: 2.2
|
||||
@void:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_image_get_xdisplay ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_image_get_ximage ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@image:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gdk_x11_screen_get_screen_number ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||
|
||||
# Header files to ignore when scanning
|
||||
IGNORE_HFILES= \
|
||||
gtkalias.h \
|
||||
fnmatch.h \
|
||||
gtkdebug.h \
|
||||
gtkbuilderprivate.h \
|
||||
@@ -79,7 +78,6 @@ IGNORE_HFILES= \
|
||||
gtktexttypes.h \
|
||||
gtktextutil.h \
|
||||
gtkthemes.h \
|
||||
gtktoggleactionprivate.h \
|
||||
gtktrayicon.h \
|
||||
gtktreedatalist.h \
|
||||
gtktreeprivate.h \
|
||||
@@ -119,7 +117,6 @@ content_files = \
|
||||
running.sgml \
|
||||
building.sgml \
|
||||
compiling.sgml \
|
||||
directfb.sgml \
|
||||
drawing-model.xml \
|
||||
glossary.xml \
|
||||
migrating-2to3.xml \
|
||||
|
||||
@@ -337,14 +337,6 @@ How to compile GTK+ itself
|
||||
<arg>--disable-shm</arg>
|
||||
<arg>--enable-shm</arg>
|
||||
</group>
|
||||
<group>
|
||||
<arg>--disable-xim</arg>
|
||||
<arg>--enable-xim</arg>
|
||||
</group>
|
||||
<group>
|
||||
<arg>--disable-xim-inst</arg>
|
||||
<arg>--enable-xim-inst</arg>
|
||||
</group>
|
||||
<group>
|
||||
<arg>--disable-xkb</arg>
|
||||
<arg>--enable-xkb</arg>
|
||||
@@ -369,7 +361,7 @@ How to compile GTK+ itself
|
||||
<arg>--with-xinput=[no|yes]</arg>
|
||||
</group>
|
||||
<group>
|
||||
<arg>--with-gdktarget=[x11|win32|quartz|directfb]</arg>
|
||||
<arg>--with-gdktarget=[x11|win32|quartz]</arg>
|
||||
</group>
|
||||
<group>
|
||||
<arg>--disable-introspection</arg>
|
||||
@@ -471,30 +463,6 @@ How to compile GTK+ itself
|
||||
</para>
|
||||
</formalpara>
|
||||
|
||||
<formalpara>
|
||||
<title><systemitem>--disable-xim</systemitem> and
|
||||
<systemitem>--enable-xim</systemitem></title>
|
||||
|
||||
<para>
|
||||
These options can be used to control whether GTK+ will
|
||||
be compiled with support for XIM. (The X Input Method
|
||||
extension, used for Japanese input.) The default is yes.
|
||||
</para>
|
||||
</formalpara>
|
||||
|
||||
<formalpara>
|
||||
<title><systemitem>--disable-xim-inst</systemitem> and
|
||||
<systemitem>--enable-xim-inst</systemitem></title>
|
||||
|
||||
<para>
|
||||
These options determine whether GTK+ will use the
|
||||
XIM instantiate callback.
|
||||
The default is 'yes', unless the host system is Solaris,
|
||||
where <function>XRegisterIMInstantiateCallback()</function>
|
||||
seems to cause a segfault.
|
||||
</para>
|
||||
</formalpara>
|
||||
|
||||
<formalpara>
|
||||
<title><systemitem>--disable-xkb</systemitem> and
|
||||
<systemitem>--enable-xkb</systemitem></title>
|
||||
@@ -583,8 +551,7 @@ How to compile GTK+ itself
|
||||
Toggles between the supported backends for GDK.
|
||||
The default is x11, unless the platform is Windows, in which
|
||||
case the default is win32. Other supported backends are
|
||||
the quartz backend for OS X, and the DirectFB backend
|
||||
for the Linux framebuffer.
|
||||
the quartz backend for OS X.
|
||||
</para>
|
||||
</formalpara>
|
||||
<formalpara>
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
||||
]>
|
||||
<refentry id="gtk-directfb">
|
||||
<refmeta>
|
||||
<refentrytitle>Using GTK+ on DirectFB</refentrytitle>
|
||||
<manvolnum>3</manvolnum>
|
||||
<refmiscinfo>GTK Library</refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>Using GTK+ on DirectFB</refname>
|
||||
<refpurpose>
|
||||
DirectFB-specific aspects of using GTK+
|
||||
</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1>
|
||||
<title>Using GTK+ on DirectFB</title>
|
||||
|
||||
<para>
|
||||
The DirectFB port of GTK+ is an implementation of GDK (and therefore GTK+)
|
||||
on top of the <ulink url="http://www.directfb.org">DirectFB</ulink>
|
||||
libraries.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Like the obsolete linux-fb port of GTK+, it runs on the Linux framebuffer,
|
||||
but the DirectFB libraries provide additional features like hardware graphics
|
||||
acceleration, input device handling and abstraction and an integrated windowing
|
||||
system.
|
||||
</para>
|
||||
|
||||
<refsect2><title>Build requirements</title>
|
||||
|
||||
<para>
|
||||
Beyond the usual GTK+ build requirements, the DirectFB backend (obviously)
|
||||
needs the DirectFB libraries (at least 0.9.21) and cairo compiled with
|
||||
DirectFB support.
|
||||
</para>
|
||||
</refsect2>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
@@ -119,7 +119,6 @@ that is, GUI components such as #GtkButton or #GtkTextView.
|
||||
<xi:include href="x11.sgml" />
|
||||
<xi:include href="windows.sgml" />
|
||||
<xi:include href="osx.sgml" />
|
||||
<xi:include href="directfb.sgml" />
|
||||
<xi:include href="resources.sgml" />
|
||||
<xi:include href="xml/question_index.sgml" />
|
||||
<xi:include href="drawing-model.xml" />
|
||||
@@ -140,7 +139,6 @@ that is, GUI components such as #GtkButton or #GtkTextView.
|
||||
<xi:include href="xml/gtksettings.xml" />
|
||||
<xi:include href="xml/gtkbindings.xml" />
|
||||
<xi:include href="xml/gtkenums.xml" />
|
||||
<xi:include href="xml/gtkgc.xml" />
|
||||
<xi:include href="xml/gtkstyle.xml" />
|
||||
<xi:include href="xml/gtkselection.xml" />
|
||||
<xi:include href="xml/gtkfeatures.xml" />
|
||||
@@ -318,7 +316,7 @@ that is, GUI components such as #GtkButton or #GtkTextView.
|
||||
<xi:include href="xml/gtktable.xml" />
|
||||
<xi:include href="xml/gtkexpander.xml" />
|
||||
<xi:include href="xml/gtkorientable.xml" />
|
||||
<xi:include href="xml/gtkextendedlayout.xml" />
|
||||
<xi:include href="xml/gtksizerequest.xml" />
|
||||
</chapter>
|
||||
|
||||
<chapter id="Ornaments">
|
||||
@@ -428,7 +426,7 @@ that is, GUI components such as #GtkButton or #GtkTextView.
|
||||
</partintro>
|
||||
|
||||
<xi:include href="xml/migrating-checklist.sgml" />
|
||||
<xi:include href="migrating-2to3.xml" />
|
||||
<xi:include href="xml/migrating-2to3.xml" />
|
||||
</part>
|
||||
|
||||
<part>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<FILE>gtkaboutdialog</FILE>
|
||||
<TITLE>GtkAboutDialog</TITLE>
|
||||
GtkAboutDialog
|
||||
GtkLicense
|
||||
gtk_about_dialog_new
|
||||
gtk_about_dialog_get_program_name
|
||||
gtk_about_dialog_set_program_name
|
||||
@@ -18,6 +19,8 @@ gtk_about_dialog_get_license
|
||||
gtk_about_dialog_set_license
|
||||
gtk_about_dialog_get_wrap_license
|
||||
gtk_about_dialog_set_wrap_license
|
||||
gtk_about_dialog_get_license_type
|
||||
gtk_about_dialog_set_license_type
|
||||
gtk_about_dialog_get_website
|
||||
gtk_about_dialog_set_website
|
||||
gtk_about_dialog_get_website_label
|
||||
@@ -421,7 +424,6 @@ gtk_aspect_frame_get_type
|
||||
<FILE>gtkbbox</FILE>
|
||||
<TITLE>GtkButtonBox</TITLE>
|
||||
GtkButtonBox
|
||||
GTK_BUTTONBOX_DEFAULT
|
||||
gtk_button_box_new
|
||||
gtk_button_box_get_layout
|
||||
gtk_button_box_get_child_secondary
|
||||
@@ -458,7 +460,6 @@ gtk_bin_get_type
|
||||
<FILE>gtkbox</FILE>
|
||||
<TITLE>GtkBox</TITLE>
|
||||
GtkBox
|
||||
GtkBoxChild
|
||||
gtk_box_new
|
||||
gtk_box_pack_start
|
||||
gtk_box_pack_end
|
||||
@@ -1155,6 +1156,8 @@ gtk_expander_set_use_markup
|
||||
gtk_expander_get_use_markup
|
||||
gtk_expander_set_label_widget
|
||||
gtk_expander_get_label_widget
|
||||
gtk_expander_set_label_fill
|
||||
gtk_expander_get_label_fill
|
||||
<SUBSECTION Standard>
|
||||
GTK_TYPE_EXPANDER
|
||||
GTK_EXPANDER_CLASS
|
||||
@@ -1672,7 +1675,6 @@ GtkIconViewPrivate
|
||||
GtkImage
|
||||
GtkImageType
|
||||
gtk_image_get_icon_set
|
||||
gtk_image_get_image
|
||||
gtk_image_get_pixbuf
|
||||
gtk_image_get_pixmap
|
||||
gtk_image_get_stock
|
||||
@@ -1682,7 +1684,6 @@ gtk_image_get_gicon
|
||||
gtk_image_get_storage_type
|
||||
gtk_image_new_from_file
|
||||
gtk_image_new_from_icon_set
|
||||
gtk_image_new_from_image
|
||||
gtk_image_new_from_pixbuf
|
||||
gtk_image_new_from_pixmap
|
||||
gtk_image_new_from_stock
|
||||
@@ -1691,7 +1692,6 @@ gtk_image_new_from_icon_name
|
||||
gtk_image_new_from_gicon
|
||||
gtk_image_set_from_file
|
||||
gtk_image_set_from_icon_set
|
||||
gtk_image_set_from_image
|
||||
gtk_image_set_from_pixbuf
|
||||
gtk_image_set_from_pixmap
|
||||
gtk_image_set_from_stock
|
||||
@@ -2024,6 +2024,7 @@ GTK_MENU_BAR_CLASS
|
||||
GTK_IS_MENU_BAR_CLASS
|
||||
GTK_MENU_BAR_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkMenuBarPrivate
|
||||
gtk_menu_bar_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -2144,6 +2145,7 @@ GTK_MESSAGE_DIALOG_CLASS
|
||||
GTK_IS_MESSAGE_DIALOG_CLASS
|
||||
GTK_MESSAGE_DIALOG_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkMessageDialogPrivate
|
||||
gtk_message_dialog_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -2193,6 +2195,7 @@ GTK_MISC_CLASS
|
||||
GTK_IS_MISC_CLASS
|
||||
GTK_MISC_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkMiscPrivate
|
||||
gtk_misc_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -2200,7 +2203,6 @@ gtk_misc_get_type
|
||||
<FILE>gtknotebook</FILE>
|
||||
<TITLE>GtkNotebook</TITLE>
|
||||
GtkNotebook
|
||||
GtkNotebookPage
|
||||
gtk_notebook_new
|
||||
gtk_notebook_append_page
|
||||
gtk_notebook_append_page_menu
|
||||
@@ -2238,6 +2240,8 @@ gtk_notebook_get_tab_label_text
|
||||
gtk_notebook_get_tab_pos
|
||||
gtk_notebook_get_tab_reorderable
|
||||
gtk_notebook_get_tab_detachable
|
||||
gtk_notebook_get_tab_hborder
|
||||
gtk_notebook_get_tab_vborder
|
||||
gtk_notebook_set_current_page
|
||||
gtk_notebook_set_group
|
||||
gtk_notebook_get_group
|
||||
@@ -2255,6 +2259,7 @@ GTK_NOTEBOOK_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
gtk_notebook_get_type
|
||||
GtkNotebookTab
|
||||
GtkNotebookPrivate
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
@@ -2343,6 +2348,7 @@ GTK_PLUG_CLASS
|
||||
GTK_IS_PLUG_CLASS
|
||||
GTK_PLUG_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkPlugPrivate
|
||||
gtk_plug_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -2373,6 +2379,7 @@ GTK_PROGRESS_BAR_CLASS
|
||||
GTK_IS_PROGRESS_BAR_CLASS
|
||||
GTK_PROGRESS_BAR_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkProgressBarPrivate
|
||||
gtk_progress_bar_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -2418,6 +2425,7 @@ GTK_RADIO_BUTTON_CLASS
|
||||
GTK_IS_RADIO_BUTTON_CLASS
|
||||
GTK_RADIO_BUTTON_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkRadioButtonPrivate
|
||||
gtk_radio_button_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -2441,6 +2449,7 @@ GTK_RADIO_MENU_ITEM_CLASS
|
||||
GTK_IS_RADIO_MENU_ITEM_CLASS
|
||||
GTK_RADIO_MENU_ITEM_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkRadioMenuItemPrivate
|
||||
gtk_radio_menu_item_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -2644,8 +2653,6 @@ gtk_recent_manager_remove_item
|
||||
gtk_recent_manager_lookup_item
|
||||
gtk_recent_manager_has_item
|
||||
gtk_recent_manager_move_item
|
||||
gtk_recent_manager_get_limit
|
||||
gtk_recent_manager_set_limit
|
||||
gtk_recent_manager_get_items
|
||||
gtk_recent_manager_purge_items
|
||||
<SUBSECTION>
|
||||
@@ -2726,6 +2733,7 @@ GTK_RULER_CLASS
|
||||
GTK_IS_RULER_CLASS
|
||||
GTK_RULER_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkRulerPrivate
|
||||
gtk_ruler_get_type
|
||||
gtk_ruler_draw_ticks
|
||||
gtk_ruler_draw_pos
|
||||
@@ -2755,6 +2763,7 @@ GTK_SCALE_CLASS
|
||||
GTK_IS_SCALE_CLASS
|
||||
GTK_SCALE_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkScalePrivate
|
||||
gtk_scale_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -2914,6 +2923,7 @@ GTK_SIZE_GROUP_CLASS
|
||||
GTK_IS_SIZE_GROUP_CLASS
|
||||
GTK_SIZE_GROUP_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkSizeGroupPrivate
|
||||
gtk_size_group_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -2975,6 +2985,7 @@ GTK_SPIN_BUTTON_CLASS
|
||||
GTK_IS_SPIN_BUTTON_CLASS
|
||||
GTK_SPIN_BUTTON_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkSpinButtonPrivate
|
||||
gtk_spin_button_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -3021,6 +3032,7 @@ GTK_STATUSBAR_CLASS
|
||||
GTK_IS_STATUSBAR_CLASS
|
||||
GTK_STATUSBAR_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkStatusbarPrivate
|
||||
gtk_statusbar_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -3104,6 +3116,7 @@ GTK_TABLE_CLASS
|
||||
GTK_IS_TABLE_CLASS
|
||||
GTK_TABLE_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkTablePrivate
|
||||
GtkTableChild
|
||||
GtkTableRowCol
|
||||
gtk_table_get_type
|
||||
@@ -3122,6 +3135,7 @@ GTK_TEAROFF_MENU_ITEM_CLASS
|
||||
GTK_IS_TEAROFF_MENU_ITEM_CLASS
|
||||
GTK_TEAROFF_MENU_ITEM_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkTearoffMenuItemPrivate
|
||||
gtk_tearoff_menu_item_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -3216,6 +3230,7 @@ GTK_TEXT_BUFFER_CLASS
|
||||
GTK_IS_TEXT_BUFFER_CLASS
|
||||
GTK_TEXT_BUFFER_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkTextBufferPrivate
|
||||
gtk_text_buffer_get_type
|
||||
GtkTextLogAttrCache
|
||||
</SECTION>
|
||||
@@ -3392,6 +3407,7 @@ GTK_TEXT_TAG_TABLE_CLASS
|
||||
GTK_IS_TEXT_TAG_TABLE_CLASS
|
||||
GTK_TEXT_TAG_TABLE_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkTextTagTablePrivate
|
||||
gtk_text_tag_table_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -3481,6 +3497,7 @@ GTK_TEXT_CHILD_ANCHOR_CLASS
|
||||
GTK_IS_TEXT_CHILD_ANCHOR_CLASS
|
||||
GTK_TEXT_CHILD_ANCHOR_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkTextViewPrivate
|
||||
gtk_text_view_get_type
|
||||
gtk_text_child_anchor_get_type
|
||||
GtkTextBTree
|
||||
@@ -4591,6 +4608,7 @@ GTK_LIST_STORE_CLASS
|
||||
GTK_IS_LIST_STORE_CLASS
|
||||
GTK_LIST_STORE_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkListStorePrivate
|
||||
gtk_list_store_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -4647,6 +4665,7 @@ GTK_VIEWPORT_CLASS
|
||||
GTK_IS_VIEWPORT_CLASS
|
||||
GTK_VIEWPORT_GET_CLASS
|
||||
<SUBSECTION Private>
|
||||
GtkViewportPrivate
|
||||
gtk_viewport_get_type
|
||||
</SECTION>
|
||||
|
||||
@@ -4942,6 +4961,7 @@ gtk_widget_get_requisition
|
||||
gtk_widget_device_is_shadowed
|
||||
|
||||
<SUBSECTION>
|
||||
gtk_requisition_new
|
||||
gtk_requisition_copy
|
||||
gtk_requisition_free
|
||||
|
||||
@@ -5185,14 +5205,6 @@ GTK_INTERFACE_AGE
|
||||
GTK_CHECK_VERSION
|
||||
</SECTION>
|
||||
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkgc</FILE>
|
||||
<TITLE>Graphics Contexts</TITLE>
|
||||
gtk_gc_get
|
||||
gtk_gc_release
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gtkstyle</FILE>
|
||||
<TITLE>GtkStyle</TITLE>
|
||||
@@ -5221,7 +5233,6 @@ gtk_paint_focus
|
||||
gtk_paint_handle
|
||||
gtk_paint_hline
|
||||
gtk_paint_option
|
||||
gtk_paint_polygon
|
||||
gtk_paint_shadow
|
||||
gtk_paint_shadow_gap
|
||||
gtk_paint_slider
|
||||
@@ -6303,12 +6314,14 @@ gtk_orientable_get_type
|
||||
GtkSizeRequest
|
||||
GtkSizeRequestIface
|
||||
GtkSizeRequestMode
|
||||
GtkRequestedSize
|
||||
gtk_size_request_get_height
|
||||
gtk_size_request_get_width
|
||||
gtk_size_request_get_height_for_width
|
||||
gtk_size_request_get_width_for_height
|
||||
gtk_size_request_get_request_mode
|
||||
gtk_size_request_get_size
|
||||
gtk_distribute_natural_allocation
|
||||
|
||||
<SUBSECTION Standard>
|
||||
GTK_SIZE_REQUEST
|
||||
@@ -6332,6 +6345,7 @@ gtk_application_quit
|
||||
gtk_application_set_action_group
|
||||
gtk_application_get_window
|
||||
gtk_application_add_window
|
||||
gtk_application_get_windows
|
||||
gtk_application_create_window
|
||||
|
||||
<SUBSECTION Standard>
|
||||
|
||||
@@ -6,14 +6,69 @@
|
||||
<title>Migrating from GTK+ 2.x to GTK+ 3</title>
|
||||
|
||||
<para>
|
||||
There are a number of steps that you can take to prepare your GTK+ 2.x
|
||||
application for the switch to GTK+ 3.
|
||||
GTK+ 3 is a major new version of GTK+ that breaks both API and ABI
|
||||
compared to GTK+ 2.x, which has remained API- and ABI-stable for a
|
||||
long time. Thankfully, most of the changes are not hard to adapt to
|
||||
and there are a number of steps that you can take to prepare your
|
||||
GTK+ 2.x application for the switch to GTK+ 3. After that, there's
|
||||
a small number of adjustments that you may have to do when you actually
|
||||
switch your application to build against GTK+ 3.
|
||||
</para>
|
||||
|
||||
<section>
|
||||
<title>Only single includes</title>
|
||||
<title>Preparation in GTK+ 2.x</title>
|
||||
|
||||
<para>
|
||||
The steps outlined in the following sections assume that your
|
||||
application is working with GTK+ 2.22, which is the final stable
|
||||
release of GTK+ 2.x. It includes all the necessary APIs and tools
|
||||
to help you port your application to GTK+ 3. If you are still using
|
||||
an older version of GTK+ 2.x, you should first get your application
|
||||
to build and work with 2.22.
|
||||
</para>
|
||||
|
||||
<section>
|
||||
<title>Do not include individual headers</title>
|
||||
<para>
|
||||
Make sure your program only include the toplevel headers:
|
||||
With GTK+ 2.x it was common to include just the header files for
|
||||
a few widgets that your application was using, which could lead
|
||||
to problems with missing definitions, etc. GTK+ 3 tightens the
|
||||
rules about which header files you are allowed to include directly.
|
||||
The allowed header files are are
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><filename>gtk/gtk.h</filename></term>
|
||||
<listitem>for GTK</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><filename>gtk/gtkunixprint.h</filename></term>
|
||||
<listitem>for low-level, UNIX-specific printing functions</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><filename>gdk-pixbuf/gdk-pixbuf.h</filename></term>
|
||||
<listitem>for GdkPixbuf</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><filename>gdk/gdk.h</filename></term>
|
||||
<listitem>for GDK</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><filename>gdk/gdkx.h</filename></term>
|
||||
<listitem>for GDK functions that are X11-specific</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><filename>gdk/gdkkeysyms.h</filename></term>
|
||||
<listitem>if you need the GDK keysym definitions</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
(these relative paths are assuming that you are using the include
|
||||
paths that are specified in the gtk+-2.0.pc file, as returned by
|
||||
<literal>pkg-config --cflags gtk+-2.0.pc</literal>.)
|
||||
</para>
|
||||
<para>
|
||||
To check that your application only includes the allowed headers,
|
||||
you can use defines to disable inclusion of individual headers,
|
||||
as follows:
|
||||
<programlisting>
|
||||
make CFLAGS+="-DG_DISABLE_SINGLE_INCLUDES -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_SINGLE_INCLUDES"
|
||||
</programlisting>
|
||||
@@ -23,8 +78,17 @@
|
||||
<section>
|
||||
<title>Do not use deprecated symbols</title>
|
||||
<para>
|
||||
Make sure your program doesn't use any functions that have been
|
||||
deprecated in GTK+ 2.x:
|
||||
Over the years, a number of functions, and in some cases, entire
|
||||
widgets have been deprecated. These deprecations are clearly spelled
|
||||
out in the API reference, with hints about the recommended replacements.
|
||||
The API reference also includes an
|
||||
<link linkend="api-index-deprecated">index</link> of all deprecated
|
||||
symbols.
|
||||
</para>
|
||||
<para>
|
||||
To verify that your program does not use any deprecated symbols,
|
||||
you can use defines to remove deprecated symbols from the header files,
|
||||
as follows:
|
||||
<programlisting>
|
||||
make CFLAGS+="-DG_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
|
||||
</programlisting>
|
||||
@@ -32,23 +96,316 @@
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Use accessor functions instead direct access</title>
|
||||
<title>Use accessor functions instead of direct access</title>
|
||||
<para>
|
||||
GTK+ 3 removes many implementation details and struct members from
|
||||
its public headers. To ensure that your application does not have problems
|
||||
with this, you define the preprocessor symbol GSEAL_ENABLE. This will
|
||||
make the compiler catch all uses of direct access to struct fields so that
|
||||
you can go through them one by one and replace them with a call to an
|
||||
accessor function instead.
|
||||
its public headers.
|
||||
</para>
|
||||
<para>
|
||||
To ensure that your application does not have problems with this, you
|
||||
define the preprocessor symbol <literal>GSEAL_ENABLE</literal>. This
|
||||
will make the compiler catch all uses of direct access to struct fields
|
||||
so that you can go through them one by one and replace them with a call
|
||||
to an accessor function instead.
|
||||
<programlisting>
|
||||
make CFLAGS+="-DGSEAL_ENABLE"
|
||||
</programlisting>
|
||||
Starting with 2.90.4, GTK+'s .pc files turn on GSEAL_ENABLE by default.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>GTK+ Modules</title>
|
||||
<title>Use cairo for drawing</title>
|
||||
<para>
|
||||
In GTK+ 3, the GDK drawing API (which closely mimics the X
|
||||
drawing API, which is itself modeled after PostScript) has been
|
||||
removed. All drawing in GTK+ 3 is done via cairo.
|
||||
</para>
|
||||
<para>
|
||||
The #GdkGC and #GdkImage objects, as well as all the functions using
|
||||
them are gone. This includes the <literal>gdk_draw_</literal> family
|
||||
of functions like gdk_draw_rectangle() and gdk_draw_drawable(). As
|
||||
#GdkGC is roughly equivalent to #cairo_t and #GdkImage was used for
|
||||
drawing images to GdkDrawables, which cairo supports automatically,
|
||||
a transition is usually straightforward.
|
||||
</para>
|
||||
<para>
|
||||
The following examples show a few common drawing idioms used by
|
||||
applications that have been ported to use cairo and how the code
|
||||
was replaced.
|
||||
</para>
|
||||
<example>
|
||||
<title>Drawing a GdkPixbuf onto a GdkDrawable</title>
|
||||
<para>
|
||||
Drawing a pixbuf onto a drawable used to be done like this:
|
||||
<programlisting><![CDATA[
|
||||
gdk_draw_pixbuf (window,
|
||||
gtk_widget_get_style (widget)->black_gc,
|
||||
pixbuf,
|
||||
0, 0
|
||||
x, y,
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
gdk_pixbuf_get_height (pixbuf),
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
0, 0);
|
||||
]]></programlisting>
|
||||
Doing the same thing with cairo:
|
||||
<programlisting><![CDATA[
|
||||
cairo_t *cr = gdk_cairo_create (window);
|
||||
gdk_cairo_set_source_pixbuf (cr, pixbuf, x, y);
|
||||
cairo_paint (cr);
|
||||
cairo_destroy (cr);
|
||||
]]></programlisting>
|
||||
Note that very similar code can be used for drawing pixmaps
|
||||
by using gdk_cairo_set_source_pixmap() instead of
|
||||
gdk_cairo_set_source_pixbuf().
|
||||
</para>
|
||||
</example>
|
||||
<example>
|
||||
<title>Drawing a tiled GdkPixmap to a GdkDrawable</title>
|
||||
<para>
|
||||
Tiled pixmaps are often used for drawing backgrounds.
|
||||
Old code looked something like this:
|
||||
<programlisting><![CDATA[
|
||||
GdkGCValues gc_values;
|
||||
GdkGC *gc;
|
||||
|
||||
/* setup */
|
||||
gc = gtk_widget_get_style (widget)->black_gc;
|
||||
gdk_gc_set_tile (gc, pixmap);
|
||||
gdk_gc_set_fill (gc, GDK_TILED);
|
||||
gdk_gc_set_ts_origin (gc, x_origin, y_origin);
|
||||
/* use */
|
||||
gdk_draw_rectangle (drawable, gc, TRUE, 0, 0, width, height);
|
||||
/* restore */
|
||||
gdk_gc_set_tile (gc, NULL);
|
||||
gdk_gc_set_fill (gc, GDK_SOLID);
|
||||
gdk_gc_set_ts_origin (gc, 0, 0);
|
||||
]]></programlisting>
|
||||
The equivalent cairo code looks like this:
|
||||
<programlisting><![CDATA[
|
||||
cairo_t *cr;
|
||||
|
||||
cr = gdk_cairo_create (drawable);
|
||||
gdk_cairo_set_source_pixmap (cr, pixmap, x_origin, y_origin);
|
||||
cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT);
|
||||
cairo_rectangle (cr, 0, 0, width, height);
|
||||
cairo_fill (cr);
|
||||
cairo_destroy (cr);
|
||||
]]></programlisting>
|
||||
Again, you can exchange pixbufs and pixmaps by using
|
||||
gdk_cairo_set_source_pixbuf() instead of
|
||||
gdk_cairo_set_source_pixmap().
|
||||
</para>
|
||||
</example>
|
||||
<example>
|
||||
<title>Drawing a PangoLayout to a clipped area</title>
|
||||
<para>
|
||||
Drawing layouts clipped is often used to avoid overdraw or to
|
||||
allow drawing selections. Code would have looked like this:
|
||||
<programlisting><![CDATA[
|
||||
GdkGC *gc;
|
||||
|
||||
/* setup */
|
||||
gc = gtk_widget_get_style (widget)->text_gc[state];
|
||||
gdk_gc_set_clip_rectangle (gc, &area);
|
||||
/* use */
|
||||
gdk_draw_layout (drawable, gc, x, y, layout);
|
||||
/* restore */
|
||||
gdk_gc_set_clip_rectangle (gc, NULL);
|
||||
]]></programlisting>
|
||||
With cairo, the same effect can be achieved using:
|
||||
<programlisting><![CDATA[
|
||||
cairo_t *cr;
|
||||
|
||||
cr = gdk_cairo_create (drawable);
|
||||
/* clip */
|
||||
gdk_cairo_rectangle (cr, &area);
|
||||
cairo_clip (cr);
|
||||
/* set the correct source color */
|
||||
gdk_cairo_set_source_color (cr, >k_widget_get_style (widget)->text[state]);
|
||||
/* draw the text */
|
||||
cairo_move_to (cr, x, y);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
cairo_destroy (cr);
|
||||
]]></programlisting>
|
||||
Clipping using cairo_clip() is of course not restricted to text
|
||||
rendering and can be used everywhere where GC clips were used.
|
||||
And using gdk_cairo_set_source_color() with style colors should
|
||||
be used in all the places where a style’s GC was used to achieve
|
||||
a particular color.
|
||||
</para>
|
||||
</example>
|
||||
<section>
|
||||
<title>what should you be aware of ?</title>
|
||||
<formalpara><title>No more stippling</title>
|
||||
<para>
|
||||
Stippling is the usage of a bi-level mask, called a #GdkBitmap.
|
||||
It was often used to achieve a checkerboard effect. You can use
|
||||
cairo_mask() to achieve this effect. To get a checkerbox mask,
|
||||
you can use code like this:
|
||||
<programlisting><![CDATA[
|
||||
static cairo_pattern_t *
|
||||
gtk_color_button_get_checkered (void)
|
||||
{
|
||||
/* need to respect pixman's stride being a multiple of 4 */
|
||||
static unsigned char data[8] = { 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0x00, 0x00 };
|
||||
cairo_surface_t *surface;
|
||||
cairo_pattern_t *pattern;
|
||||
|
||||
surface = cairo_image_surface_create_for_data (data,
|
||||
CAIRO_FORMAT_A8,
|
||||
2, 2,
|
||||
4);
|
||||
pattern = cairo_pattern_create_for_surface (surface);
|
||||
cairo_surface_destroy (surface);
|
||||
cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
|
||||
cairo_pattern_set_filter (pattern, CAIRO_FILTER_NEAREST);
|
||||
|
||||
return pattern;
|
||||
}
|
||||
]]></programlisting>
|
||||
Note that stippling looks very outdated in UIs, and is rarely
|
||||
used in modern applications. All properties that made use of
|
||||
stippling have been removed from GTK+ 3. Most prominently,
|
||||
stippling is absent from text rendering, in particular #GtkTextTag.
|
||||
</para>
|
||||
</formalpara>
|
||||
<formalpara><title>Using the the target drawable also as source or mask</title>
|
||||
<para>
|
||||
The gdk_draw_drawable() function allowed using the same drawable
|
||||
as source and target. This was often used to achieve a scrolling
|
||||
effect. Cairo does not allow this yet. You can however use
|
||||
cairo_push_group() to get a different intermediate target that
|
||||
you can copy to. So you can replace this code:
|
||||
<programlisting><![CDATA[
|
||||
gdk_draw_drawable (pixmap,
|
||||
gc,
|
||||
pixmap,
|
||||
area.x + dx, area.y + dy,
|
||||
area.x, area.y,
|
||||
area.width, area.height);
|
||||
]]></programlisting>
|
||||
By using this code:
|
||||
<programlisting><![CDATA[
|
||||
cairo_t *cr = gdk_cairo_create (pixmap);
|
||||
/* clipping restricts the intermediate surface's size, so it's a good idea
|
||||
* to use it. */
|
||||
gdk_cairo_rectangle (cr, &area);
|
||||
cairo_clip (cr);
|
||||
/* Now push a group to change the target */
|
||||
cairo_push_group (cr);
|
||||
gdk_cairo_set_source_pixmap (cr, pixmap, dx, dy);
|
||||
cairo_paint (cr);
|
||||
/* Now copy the intermediate target back */
|
||||
cairo_pop_group_to_source (cr);
|
||||
cairo_paint (cr);
|
||||
cairo_destroy (cr);
|
||||
]]></programlisting>
|
||||
The cairo developers plan to add self-copies in the future to allow
|
||||
exactly this effect, so you might want to keep up on cairo
|
||||
development to be able to change your code.
|
||||
</para>
|
||||
</formalpara>
|
||||
<formalpara><title>Using pango_cairo_show_layout() instead of gdk_draw_layout_with_colors()</title>
|
||||
<para>
|
||||
GDK provided a way to ignore the color attributes of text and use
|
||||
a hardcoded text color with the gdk_draw_layout_with_colors()
|
||||
function. This is often used to draw text shadows or selections.
|
||||
Pango’s cairo support does not yet provide this functionality. If
|
||||
you use Pango layouts that change colors, the easiest way to achieve
|
||||
a similar effect is using pango_cairo_layout_path() and cairo_fill()
|
||||
instead of gdk_draw_layout_with_colors(). Note that this results in
|
||||
a slightly uglier-looking text, as subpixel anti-aliasing is not
|
||||
supported.
|
||||
</para>
|
||||
</formalpara>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Changes that need to be done at the time of the switch</title>
|
||||
|
||||
<para>
|
||||
This section outlines porting tasks that you need to tackle when
|
||||
you get to the point that you actually build your application against
|
||||
GTK+ 3. Making it possible to prepare for these in GTK+ 2.22 would
|
||||
have been either impossible or impractical.
|
||||
</para>
|
||||
|
||||
<section>
|
||||
<title>Replace GdkRegion by cairo_region_t</title>
|
||||
|
||||
<para>
|
||||
Starting with version 1.10, cairo provides a region API that is
|
||||
equivalent to the GDK region API (which was itself copied from
|
||||
the X server). Therefore, the region API has been removed in GTK+ 3.
|
||||
</para>
|
||||
<para>
|
||||
Porting your application to the cairo region API should be a straight
|
||||
find-and-replace task. Please refer to the following table:
|
||||
<table>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row><entry>GDK</entry><entry>cairo</entry></row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row><entry>#GdkRegion</entry><entry>#cairo_region_t</entry></row>
|
||||
<row><entry>#GdkRectangle</entry><entry>#cairo_rectangle_int_t</entry></row>
|
||||
<row><entry>gdk_rectangle_intersect()</entry><entry>this function is still there</entry></row>
|
||||
<row><entry>gdk_rectangle_union()</entry><entry>this function is still there</entry></row>
|
||||
<row><entry>gdk_region_new()</entry><entry>cairo_region_create()</entry></row>
|
||||
<row><entry>gdk_region_copy()</entry><entry>cairo_region_copy()</entry></row>
|
||||
<row><entry>gdk_region_destroy()</entry><entry>cairo_region_destroy()</entry></row>
|
||||
<row><entry>gdk_region_rectangle()</entry><entry>cairo_region_create_rectangle()</entry></row>
|
||||
<row><entry>gdk_region_get_clipbox()</entry><entry>cairo_region_get_extents()</entry></row>
|
||||
<row><entry>gdk_region_get_rectangles()</entry><entry>cairo_region_num_rectangles() and
|
||||
cairo_region_get_rectangle()</entry></row>
|
||||
<row><entry>gdk_region_empty()</entry><entry>cairo_region_is_empty()</entry></row>
|
||||
<row><entry>gdk_region_equal()</entry><entry>cairo_region_equal()</entry></row>
|
||||
<row><entry>gdk_region_point_in()</entry><entry>cairo_region_contains_point()</entry></row>
|
||||
<row><entry>gdk_region_rect_in()</entry><entry>cairo_region_contains_rectangle()</entry></row>
|
||||
<row><entry>gdk_region_offset()</entry><entry>cairo_region_translate()</entry></row>
|
||||
<row><entry>gdk_region_union_with_rect()</entry><entry>cairo_region_union_rectangle()</entry></row>
|
||||
<row><entry>gdk_region_intersect()</entry><entry>cairo_region_intersect()</entry></row>
|
||||
<row><entry>gdk_region_union()</entry><entry>cairo_region_union()</entry></row>
|
||||
<row><entry>gdk_region_subtract()</entry><entry>cairo_region_subtract()</entry></row>
|
||||
<row><entry>gdk_region_xor()</entry><entry>cairo_region_xor()</entry></row>
|
||||
<row><entry>gdk_region_shrink()</entry><entry>no replacement</entry></row>
|
||||
<row><entry>gdk_region_polygon()</entry><entry>no replacement, use cairo paths instead</entry></row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Prevent mixed linkage</title>
|
||||
<para>
|
||||
Linking against GTK+ 2.x and GTK+ 3 in the same process is problematic
|
||||
and can lead to hard-to-diagnose crashes. The gtk_init() function in
|
||||
both GTK+ 2.22 and in GTK+ 3 tries to detect this situation and abort
|
||||
with a diagnostic message, but this check is not 100% reliable (e.g. if
|
||||
the problematic linking happens only in loadable modules).
|
||||
</para>
|
||||
<para>
|
||||
Direct linking of your application against both versions of GTK+ is
|
||||
easy to avoid; the problem gets harder when your application is using
|
||||
libraries that are themselves linked against some version of GTK+.
|
||||
In that case, you have to verify that you are using a version of the
|
||||
library that is linked against GTK+ 3.
|
||||
</para>
|
||||
<para>
|
||||
If you are using packages provided by a distributor, it is likely that
|
||||
parallel installable versions of the library exist for GTK+ 2.x and
|
||||
GTK+ 3, e.g for vte, check for vte3; for webkitgtk look for webkitgtk3,
|
||||
and so on.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Install GTK+ modules in the right place</title>
|
||||
<para>
|
||||
Some software packages install loadable GTK+ modules such as theme engines,
|
||||
gdk-pixbuf loaders or input methods. Since GTK+ 3 is parallel-installable
|
||||
@@ -78,4 +435,7 @@
|
||||
unhappiness and must be avoided.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
gtkactiongroup.sgml
|
||||
gtkbbox.sgml
|
||||
gtkbox.sgml
|
||||
gtkbuilder.sgml
|
||||
gtkbutton.sgml
|
||||
gtkcalendar.sgml
|
||||
gtkcelleditable.sgml
|
||||
gtkhbox.sgml
|
||||
gtkiconview.sgml
|
||||
gtkmessagedialog.sgml
|
||||
@@ -16,6 +20,7 @@ gtkrecentchooser.sgml
|
||||
gtkrecentchooserdialog.sgml
|
||||
gtkrecentchoosermenu.sgml
|
||||
gtkrecentchooserwidget.sgml
|
||||
gtkrecentmanager.sgml
|
||||
gtkscalebutton.sgml
|
||||
gtkseparator.sgml
|
||||
gtkseparatormenuitem.sgml
|
||||
|
||||
@@ -1,401 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
GtkActionGroup
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
A group of actions
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
Actions are organised into groups. An action group is essentially a
|
||||
map from names to #GtkAction objects.
|
||||
</para>
|
||||
<para>
|
||||
All actions that would make sense to use in a particular context
|
||||
should be in a single group. Multiple action groups may be used for a
|
||||
particular user interface. In fact, it is expected that most nontrivial
|
||||
applications will make use of multiple groups. For example, in an application
|
||||
that can edit multiple documents, one group holding global actions
|
||||
(e.g. quit, about, new), and one group per document holding actions that
|
||||
act on that document (eg. save, cut/copy/paste, etc). Each window's menus
|
||||
would be constructed from a combination of two action groups.
|
||||
</para>
|
||||
<para id="Action-Accel">
|
||||
Accelerators are handled by the GTK+ accelerator map. All actions are assigned an
|
||||
accelerator path (which normally has the form
|
||||
<literal><Actions>/<replaceable>group-name</replaceable>/<replaceable>action-name</replaceable></literal>)
|
||||
and a shortcut is associated with this accelerator path. All menuitems and
|
||||
toolitems take on this accelerator path. The GTK+ accelerator map code makes
|
||||
sure that the correct shortcut is displayed next to the menu item.
|
||||
</para>
|
||||
|
||||
<refsect2 id="GtkActionGroup-BUILDER-UI">
|
||||
<title>GtkActionGroup as GtkBuildable</title>
|
||||
<para>
|
||||
The GtkActionGroup implementation of the GtkBuildable interface accepts
|
||||
GtkAction objects as <child> elements in UI definitions.
|
||||
</para>
|
||||
<para>
|
||||
Note that it is probably more common to define actions and action groups
|
||||
in the code, since they are directly related to what the code can do.
|
||||
</para>
|
||||
<para>
|
||||
The GtkActionGroup implementation of the GtkBuildable interface supports a
|
||||
custom <accelerator> element, which has attributes named key and
|
||||
modifiers and allows to specify accelerators. This is similar to the
|
||||
<accelerator> element of GtkWidget, the main difference is that
|
||||
it doesn't allow you to specify a signal.
|
||||
</para>
|
||||
<example>
|
||||
<title>A <structname>GtkDialog</structname> UI definition fragment.</title>
|
||||
<programlisting><![CDATA[
|
||||
<object class="GtkActionGroup" id="actiongroup">
|
||||
<child>
|
||||
<object class="GtkAction" id="About">
|
||||
<property name="name">About</property>
|
||||
<property name="stock_id">gtk-about</property>
|
||||
<signal handler="about_activate" name="activate"/>
|
||||
</object>
|
||||
<accelerator key="F1" modifiers="GDK_CONTROL_MASK | GDK_SHIFT_MASK"/>
|
||||
</child>
|
||||
</object>
|
||||
]]></programlisting>
|
||||
</example>
|
||||
</refsect2>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkActionGroup ##### -->
|
||||
<para>
|
||||
The <structname>GtkActionGroup</structname> struct contains only private
|
||||
members and should not be accessed directly.
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### SIGNAL GtkActionGroup::connect-proxy ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@actiongroup: the object which received the signal.
|
||||
@arg1:
|
||||
@widget:
|
||||
|
||||
<!-- ##### SIGNAL GtkActionGroup::disconnect-proxy ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@actiongroup: the object which received the signal.
|
||||
@arg1:
|
||||
@widget:
|
||||
|
||||
<!-- ##### SIGNAL GtkActionGroup::post-activate ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@actiongroup: the object which received the signal.
|
||||
@arg1:
|
||||
|
||||
<!-- ##### SIGNAL GtkActionGroup::pre-activate ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@actiongroup: the object which received the signal.
|
||||
@arg1:
|
||||
|
||||
<!-- ##### ARG GtkActionGroup:name ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkActionGroup:sensitive ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkActionGroup:visible ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_new ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@name:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_get_name ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_get_sensitive ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_set_sensitive ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@sensitive:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_get_visible ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_set_visible ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@visible:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_get_action ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@action_name:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_list_actions ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_add_action ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@action:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_add_action_with_accel ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@action:
|
||||
@accelerator:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_remove_action ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@action:
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkActionEntry ##### -->
|
||||
<para>
|
||||
<structname>GtkActionEntry</structname> structs are used with
|
||||
gtk_action_group_add_actions() to construct actions.
|
||||
</para>
|
||||
|
||||
@name: The name of the action.
|
||||
@stock_id: The stock id for the action, or the name of an icon from the icon
|
||||
theme.
|
||||
@label: The label for the action. This field should typically be marked for
|
||||
translation, see gtk_action_group_set_translation_domain(). If @label
|
||||
is %NULL, the label of the stock item with id @stock_id is used.
|
||||
@accelerator: The accelerator for the action, in the format understood by
|
||||
gtk_accelerator_parse().
|
||||
@tooltip: The tooltip for the action. This field should typically be marked
|
||||
for translation, see gtk_action_group_set_translation_domain().
|
||||
@callback: The function to call when the action is activated.
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_add_actions ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@entries:
|
||||
@n_entries:
|
||||
@user_data:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_add_actions_full ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@entries:
|
||||
@n_entries:
|
||||
@user_data:
|
||||
@destroy:
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkToggleActionEntry ##### -->
|
||||
<para>
|
||||
<structname>GtkToggleActionEntry</structname> structs are used with
|
||||
gtk_action_group_add_toggle_actions() to construct toggle actions.
|
||||
</para>
|
||||
|
||||
@name: The name of the action.
|
||||
@stock_id: The stock id for the action, or the name of an icon from the icon
|
||||
theme.
|
||||
@label: The label for the action. This field should typically be marked for
|
||||
translation, see gtk_action_group_set_translation_domain().
|
||||
@accelerator: The accelerator for the action, in the format understood by
|
||||
gtk_accelerator_parse().
|
||||
@tooltip: The tooltip for the action. This field should typically be marked
|
||||
for translation, see gtk_action_group_set_translation_domain().
|
||||
@callback: The function to call when the action is activated.
|
||||
@is_active: The initial state of the toggle action.
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_add_toggle_actions ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@entries:
|
||||
@n_entries:
|
||||
@user_data:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_add_toggle_actions_full ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@entries:
|
||||
@n_entries:
|
||||
@user_data:
|
||||
@destroy:
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkRadioActionEntry ##### -->
|
||||
<para>
|
||||
<structname>GtkRadioActionEntry</structname> structs are used with
|
||||
gtk_action_group_add_radio_actions() to construct groups of radio actions.
|
||||
</para>
|
||||
|
||||
@name: The name of the action.
|
||||
@stock_id: The stock id for the action, or the name of an icon from the icon
|
||||
theme.
|
||||
@label: The label for the action. This field should typically be marked for
|
||||
translation, see gtk_action_group_set_translation_domain().
|
||||
@accelerator: The accelerator for the action, in the format understood by
|
||||
gtk_accelerator_parse().
|
||||
@tooltip: The tooltip for the action. This field should typically be marked for
|
||||
translation, see gtk_action_group_set_translation_domain().
|
||||
@value: The value to set on the radio action. See gtk_radio_action_get_current_value().
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_add_radio_actions ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@entries:
|
||||
@n_entries:
|
||||
@value:
|
||||
@on_change:
|
||||
@user_data:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_add_radio_actions_full ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@entries:
|
||||
@n_entries:
|
||||
@value:
|
||||
@on_change:
|
||||
@user_data:
|
||||
@destroy:
|
||||
|
||||
|
||||
<!-- ##### USER_FUNCTION GtkTranslateFunc ##### -->
|
||||
<para>
|
||||
The function used to translate messages in e.g. #GtkIconFactory
|
||||
and #GtkActionGroup.
|
||||
</para>
|
||||
|
||||
@path: The id of the message. In #GtkItemFactory this will be a path
|
||||
from a #GtkItemFactoryEntry, in #GtkActionGroup, it will be a label
|
||||
or tooltip from a #GtkActionEntry.
|
||||
@func_data: user data passed in when registering the function
|
||||
@Returns: the translated message
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_set_translate_func ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@func:
|
||||
@data:
|
||||
@notify:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_set_translation_domain ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@domain:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_action_group_translate_string ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@action_group:
|
||||
@string:
|
||||
@Returns:
|
||||
|
||||
|
||||
@@ -1,389 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
GtkButton
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
A widget that creates a signal when clicked on
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
The #GtkButton widget is generally used to attach a function to that
|
||||
is called when the button is pressed. The various signals and how to use
|
||||
them are outlined below.
|
||||
</para>
|
||||
<para>
|
||||
The #GtkButton widget can hold any valid child widget. That is it can
|
||||
hold most any other standard #GtkWidget. The most commonly used child is
|
||||
the #GtkLabel.
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkButton ##### -->
|
||||
<para>
|
||||
This should not be accessed directly. Use the accessor functions below.
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### SIGNAL GtkButton::activate ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button: the object which received the signal.
|
||||
|
||||
<!-- ##### SIGNAL GtkButton::clicked ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
|
||||
<!-- ##### SIGNAL GtkButton::enter ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
|
||||
<!-- ##### SIGNAL GtkButton::leave ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
|
||||
<!-- ##### SIGNAL GtkButton::pressed ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
|
||||
<!-- ##### SIGNAL GtkButton::released ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
|
||||
<!-- ##### ARG GtkButton:focus-on-click ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:image ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:image-position ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:label ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:relief ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:use-stock ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:use-underline ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:xalign ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:yalign ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:child-displacement-x ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:child-displacement-y ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:default-border ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:default-outside-border ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:displace-focus ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:image-spacing ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkButton:inner-border ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_new ##### -->
|
||||
<para>
|
||||
Creates a new #GtkButton widget. To add a child widget to the button,
|
||||
use gtk_container_add().
|
||||
</para>
|
||||
|
||||
@void:
|
||||
@Returns: The newly created #GtkButton widget.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_new_with_label ##### -->
|
||||
<para>
|
||||
Creates a #GtkButton widget with a #GtkLabel child containing the given
|
||||
text.
|
||||
</para>
|
||||
|
||||
@label: The text you want the #GtkLabel to hold.
|
||||
@Returns: The newly created #GtkButton widget.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_new_with_mnemonic ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@label:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_new_from_stock ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@stock_id:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_pressed ##### -->
|
||||
<para>
|
||||
Emits a #GtkButton::pressed signal to the given #GtkButton.
|
||||
</para>
|
||||
|
||||
@button: The #GtkButton you want to send the signal to.
|
||||
@Deprecated: 2.20: Use the #GtkWidget::button-press-event signal.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_released ##### -->
|
||||
<para>
|
||||
Emits a #GtkButton::released signal to the given #GtkButton.
|
||||
</para>
|
||||
|
||||
@button: The #GtkButton you want to send the signal to.
|
||||
@Deprecated: 2.20: Use the #GtkWidget::button-release-event signal.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_clicked ##### -->
|
||||
<para>
|
||||
Emits a #GtkButton::clicked signal to the given #GtkButton.
|
||||
</para>
|
||||
|
||||
@button: The #GtkButton you want to send the signal to.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_enter ##### -->
|
||||
<para>
|
||||
Emits a #GtkButton::enter signal to the given #GtkButton.
|
||||
</para>
|
||||
|
||||
@button: The #GtkButton you want to send the signal to.
|
||||
@Deprecated: 2.20: Use the #GtkWidget::enter-notify-event signal.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_leave ##### -->
|
||||
<para>
|
||||
Emits a #GtkButton::leave signal to the given #GtkButton.
|
||||
</para>
|
||||
|
||||
@button: The #GtkButton you want to send the signal to.
|
||||
@Deprecated: 2.20: Use the #GtkWidget::leave-notify-event signal.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_set_relief ##### -->
|
||||
<para>
|
||||
Sets the relief style of the edges of the given #GtkButton widget.
|
||||
Three styles exist, GTK_RELIEF_NORMAL, GTK_RELIEF_HALF, GTK_RELIEF_NONE.
|
||||
The default style is, as one can guess, GTK_RELIEF_NORMAL.
|
||||
|
||||
<!-- FIXME: put pictures of each style -->
|
||||
</para>
|
||||
|
||||
@button: The #GtkButton you want to set relief styles of.
|
||||
@newstyle: The GtkReliefStyle as described above.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_get_relief ##### -->
|
||||
<para>
|
||||
Returns the current relief style of the given #GtkButton.
|
||||
</para>
|
||||
|
||||
@button: The #GtkButton you want the #GtkReliefStyle from.
|
||||
@Returns: The current #GtkReliefStyle
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_get_label ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_set_label ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@label:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_get_use_stock ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_set_use_stock ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@use_stock:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_get_use_underline ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_set_use_underline ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@use_underline:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_set_focus_on_click ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@focus_on_click:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_get_focus_on_click ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_set_alignment ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@xalign:
|
||||
@yalign:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_get_alignment ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@xalign:
|
||||
@yalign:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_set_image ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@image:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_get_image ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_set_image_position ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@position:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_button_get_image_position ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@button:
|
||||
@Returns:
|
||||
|
||||
|
||||
@@ -1,318 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
GtkCalendar
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
Displays a calendar and allows the user to select a date
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
#GtkCalendar is a widget that displays a calendar, one month at a time.
|
||||
It can be created with gtk_calendar_new().
|
||||
</para>
|
||||
<para>
|
||||
The month and year currently displayed can be altered with
|
||||
gtk_calendar_select_month(). The exact day can be selected from the displayed
|
||||
month using gtk_calendar_select_day().
|
||||
</para>
|
||||
<para>
|
||||
To place a visual marker on a particular day, use gtk_calendar_mark_day()
|
||||
and to remove the marker, gtk_calendar_unmark_day().
|
||||
Alternative, all marks can be cleared with gtk_calendar_clear_marks().
|
||||
</para>
|
||||
<para>
|
||||
The way in which the calendar itself is displayed can be altered using
|
||||
gtk_calendar_set_display_options().
|
||||
</para>
|
||||
<para>
|
||||
The selected date can be retrieved from a #GtkCalendar using
|
||||
gtk_calendar_get_date().
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkCalendar ##### -->
|
||||
<para>
|
||||
<structfield>num_marked_dates</structfield> is an integer containing the
|
||||
number of days that have a mark over them.
|
||||
</para>
|
||||
<para>
|
||||
<structfield>marked_date</structfield> is an array containing the day numbers
|
||||
that currently have a mark over them.
|
||||
</para>
|
||||
<para>
|
||||
<structfield>month</structfield>, <structfield>year</structfield>, and
|
||||
<structfield>selected_day</structfield> contain the currently visible month,
|
||||
year, and selected day respectively.
|
||||
</para>
|
||||
<para>
|
||||
All of these fields should be considered read only, and everything in this
|
||||
struct should only be modified using the functions provided below.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Note that <structfield>month</structfield> is zero-based (i.e it allowed values
|
||||
are 0-11) while <structfield>selected_day</structfield> is one-based
|
||||
(i.e. allowed values are 1-31).
|
||||
</para>
|
||||
</note>
|
||||
|
||||
|
||||
<!-- ##### SIGNAL GtkCalendar::day-selected ##### -->
|
||||
<para>
|
||||
Emitted when the user selects a day.
|
||||
</para>
|
||||
|
||||
@calendar: the object which received the signal.
|
||||
|
||||
<!-- ##### SIGNAL GtkCalendar::day-selected-double-click ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar: the object which received the signal.
|
||||
|
||||
<!-- ##### SIGNAL GtkCalendar::month-changed ##### -->
|
||||
<para>
|
||||
Emitted when the user clicks a button to change the selected month on a
|
||||
calendar.
|
||||
</para>
|
||||
|
||||
@calendar: the object which received the signal.
|
||||
|
||||
<!-- ##### SIGNAL GtkCalendar::next-month ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar: the object which received the signal.
|
||||
|
||||
<!-- ##### SIGNAL GtkCalendar::next-year ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar: the object which received the signal.
|
||||
|
||||
<!-- ##### SIGNAL GtkCalendar::prev-month ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar: the object which received the signal.
|
||||
|
||||
<!-- ##### SIGNAL GtkCalendar::prev-year ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar: the object which received the signal.
|
||||
|
||||
<!-- ##### ARG GtkCalendar:day ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkCalendar:detail-height-rows ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkCalendar:detail-width-chars ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkCalendar:month ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkCalendar:no-month-change ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkCalendar:show-day-names ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkCalendar:show-details ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkCalendar:show-heading ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkCalendar:show-week-numbers ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkCalendar:year ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### USER_FUNCTION GtkCalendarDetailFunc ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@year:
|
||||
@month:
|
||||
@day:
|
||||
@user_data:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### ENUM GtkCalendarDisplayOptions ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@GTK_CALENDAR_SHOW_HEADING:
|
||||
@GTK_CALENDAR_SHOW_DAY_NAMES:
|
||||
@GTK_CALENDAR_NO_MONTH_CHANGE:
|
||||
@GTK_CALENDAR_SHOW_WEEK_NUMBERS:
|
||||
@GTK_CALENDAR_WEEK_START_MONDAY:
|
||||
@GTK_CALENDAR_SHOW_DETAILS:
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_new ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@void:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_select_month ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@month:
|
||||
@year:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_select_day ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@day:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_mark_day ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@day:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_unmark_day ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@day:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_clear_marks ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_get_display_options ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_set_display_options ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@flags:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_get_date ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@year:
|
||||
@month:
|
||||
@day:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_set_detail_func ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@func:
|
||||
@data:
|
||||
@destroy:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_get_detail_width_chars ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_set_detail_width_chars ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@chars:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_get_detail_height_rows ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_set_detail_height_rows ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@calendar:
|
||||
@rows:
|
||||
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
GtkCellEditable
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
Interface for widgets which can are used for editing cells
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
The #GtkCellEditable interface must be implemented for widgets
|
||||
to be usable when editing the contents of a #GtkTreeView cell.
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkCellEditable ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### SIGNAL GtkCellEditable::editing-done ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@celleditable: the object which received the signal.
|
||||
|
||||
<!-- ##### SIGNAL GtkCellEditable::remove-widget ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@celleditable: the object which received the signal.
|
||||
|
||||
<!-- ##### ARG GtkCellEditable:editing-canceled ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### STRUCT GtkCellEditableIface ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@g_iface:
|
||||
@editing_done:
|
||||
@remove_widget:
|
||||
@start_editing:
|
||||
|
||||
<!-- ##### FUNCTION gtk_cell_editable_start_editing ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@cell_editable:
|
||||
@event:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_cell_editable_editing_done ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@cell_editable:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_cell_editable_remove_widget ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@cell_editable:
|
||||
|
||||
|
||||
@@ -55,11 +55,14 @@ that drawing is implicitly clipped to the exposed area.
|
||||
gboolean
|
||||
expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
{
|
||||
gdk_draw_arc (widget->window,
|
||||
widget->style->fg_gc[gtk_widget_get_state (widget)],
|
||||
TRUE,
|
||||
0, 0, widget->allocation.width, widget->allocation.height,
|
||||
0, 64 * 360);
|
||||
cairo_t *cr;
|
||||
|
||||
cr = gdk_cairo_create (event->window);
|
||||
|
||||
cairo_set_source_rgb (cr, 0.0, 0.0, 1.0);
|
||||
cairo_paint (cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -785,7 +785,6 @@ Specifies the side of the entry at which an icon is placed.
|
||||
|
||||
@GTK_ENTRY_ICON_PRIMARY: At the beginning of the entry (depending on the text direction).
|
||||
@GTK_ENTRY_ICON_SECONDARY: At the end of the entry (depending on the text direction).
|
||||
|
||||
@Since: 2.16
|
||||
|
||||
<!-- ##### FUNCTION gtk_entry_set_icon_from_pixbuf ##### -->
|
||||
|
||||
@@ -115,6 +115,11 @@ a <child> type attribute.
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkExpander:label-fill ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkExpander:label-widget ##### -->
|
||||
<para>
|
||||
|
||||
@@ -271,3 +276,21 @@ a <child> type attribute.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_expander_set_label_fill ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@expander:
|
||||
@label_fill:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_expander_get_label_fill ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@expander:
|
||||
@Returns:
|
||||
|
||||
|
||||
|
||||
@@ -48,11 +48,6 @@ only be accessed using the functions below.
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### ARG GtkFontSelection:font ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkFontSelection:font-name ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -118,3 +118,12 @@ fonts.</para></listitem>
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_font_selection_dialog_get_font_selection ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@fsd:
|
||||
@Returns:
|
||||
|
||||
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
Graphics Contexts
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
A shared pool of GdkGC objects
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
These functions provide access to a shared pool of #GdkGC objects.
|
||||
When a new #GdkGC is needed, gtk_gc_get() is called with the required depth,
|
||||
colormap and #GdkGCValues. If a #GdkGC with the required properties already
|
||||
exists then that is returned. If not, a new #GdkGC is created.
|
||||
When the #GdkGC is no longer needed, gtk_gc_release() should be called.
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_gc_get ##### -->
|
||||
<para>
|
||||
Gets a #GdkGC with the given depth, colormap and #GdkGCValues.
|
||||
If a #GdkGC with the given properties already exists then it is returned,
|
||||
otherwise a new #GdkGC is created.
|
||||
The returned #GdkGC should be released with gtk_gc_release() when it is no
|
||||
longer needed.
|
||||
</para>
|
||||
|
||||
@depth: the depth of the #GdkGC to create.
|
||||
@colormap: the #GdkColormap (FIXME: I don't know why this is needed).
|
||||
@values: a #GdkGCValues struct containing settings for the #GdkGC.
|
||||
@values_mask: a set of flags indicating which of the fields in @values has
|
||||
been set.
|
||||
@Returns: a #GdkGC.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_gc_release ##### -->
|
||||
<para>
|
||||
Releases a #GdkGC allocated using gtk_gc_get().
|
||||
</para>
|
||||
|
||||
@gc: a #GdkGC.
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ their icons, but more additional application themes can be
|
||||
installed as operating system vendors and users choose.
|
||||
</para>
|
||||
<para>
|
||||
Named icons are similar to the <xref linkend="gtk-Themeable-Stock-Images"/>
|
||||
Named icons are similar to the <xref linkend="gtk3-Themeable-Stock-Images"/>
|
||||
facility, and the distinction between the two may be a bit confusing.
|
||||
A few things to keep in mind:
|
||||
</para>
|
||||
@@ -27,7 +27,7 @@ A few things to keep in mind:
|
||||
<listitem>
|
||||
<para>
|
||||
Stock images usually are used in conjunction with
|
||||
<xref linkend="gtk-Stock-Items"/>., such as %GTK_STOCK_OK or
|
||||
<xref linkend="gtk3-Stock-Items"/>., such as %GTK_STOCK_OK or
|
||||
%GTK_STOCK_OPEN. Named icons are easier to set up and therefore
|
||||
are more useful for new icons that an application wants to
|
||||
add, such as application icons or window icons.
|
||||
@@ -436,6 +436,19 @@ The #GQuark used for #GtkIconThemeError errors.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_icon_info_load_symbolic_for_style ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@icon_info:
|
||||
@style:
|
||||
@state:
|
||||
@was_symbolic:
|
||||
@error:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_icon_info_set_raw_coordinates ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -278,12 +278,6 @@ Emitted when the user or a function changes the current page.
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### STRUCT GtkNotebookPage ##### -->
|
||||
<para>
|
||||
The #GtkNotebookPage is an opaque implementation detail of #GtkNotebook.
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_notebook_new ##### -->
|
||||
<para>
|
||||
</para>
|
||||
@@ -487,17 +481,6 @@ The #GtkNotebookPage is an opaque implementation detail of #GtkNotebook.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_notebook_query_tab_label_packing ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@notebook:
|
||||
@child:
|
||||
@expand:
|
||||
@fill:
|
||||
@pack_type:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_notebook_set_menu_label ##### -->
|
||||
<para>
|
||||
</para>
|
||||
@@ -525,17 +508,6 @@ The #GtkNotebookPage is an opaque implementation detail of #GtkNotebook.
|
||||
@tab_label:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_notebook_set_tab_label_packing ##### -->
|
||||
<para>
|
||||
</para>
|
||||
|
||||
@notebook:
|
||||
@child:
|
||||
@expand:
|
||||
@fill:
|
||||
@pack_type:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_notebook_set_tab_label_text ##### -->
|
||||
<para>
|
||||
</para>
|
||||
@@ -641,6 +613,24 @@ The #GtkNotebookPage is an opaque implementation detail of #GtkNotebook.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_notebook_get_tab_hborder ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@notebook:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_notebook_get_tab_vborder ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@notebook:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_notebook_set_current_page ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ GtkWidget *frame2 = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_IN);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_IN);
|
||||
|
||||
gtk_widget_set_size_request (hpaned, 200 + GTK_PANED (hpaned)->gutter_size, -1);
|
||||
gtk_widget_set_size_request (hpaned, 200, -1);
|
||||
|
||||
gtk_paned_pack1 (GTK_PANED (hpaned), frame1, TRUE, FALSE);
|
||||
gtk_widget_set_size_request (frame1, 50, -1);
|
||||
|
||||
@@ -89,6 +89,11 @@ and should be accessed using the functions below.
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkProgressBar:show-text ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkProgressBar:text ##### -->
|
||||
<para>
|
||||
|
||||
@@ -141,15 +146,6 @@ Creates a new #GtkProgressBar.
|
||||
@pbar:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_text ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@text:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_fraction ##### -->
|
||||
<para>
|
||||
|
||||
@@ -159,31 +155,13 @@ Creates a new #GtkProgressBar.
|
||||
@fraction:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_pulse_step ##### -->
|
||||
<!-- ##### FUNCTION gtk_progress_bar_get_fraction ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@fraction:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_orientation ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@orientation:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_ellipsize ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@mode:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### ENUM GtkProgressBarOrientation ##### -->
|
||||
@@ -197,31 +175,13 @@ directions for the visible progress bar.
|
||||
@GTK_PROGRESS_BOTTOM_TO_TOP: A vertical progress bar growing from bottom to top.
|
||||
@GTK_PROGRESS_TOP_TO_BOTTOM: A vertical progress bar growing from top to bottom.
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_get_text ##### -->
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_orientation ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_get_fraction ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_get_pulse_step ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@Returns:
|
||||
@orientation:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_get_orientation ##### -->
|
||||
@@ -233,6 +193,51 @@ directions for the visible progress bar.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_show_text ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@show_text:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_get_show_text ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_text ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@text:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_get_text ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_ellipsize ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@mode:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_get_ellipsize ##### -->
|
||||
<para>
|
||||
|
||||
@@ -242,11 +247,21 @@ directions for the visible progress bar.
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### ENUM GtkProgressBarStyle ##### -->
|
||||
<!-- ##### FUNCTION gtk_progress_bar_set_pulse_step ##### -->
|
||||
<para>
|
||||
An enumeration representing the styles for drawing the progress bar.
|
||||
|
||||
</para>
|
||||
|
||||
@GTK_PROGRESS_CONTINUOUS: The progress bar grows in a smooth, continuous manner.
|
||||
@GTK_PROGRESS_DISCRETE: The progress bar grows in discrete, visible blocks.
|
||||
@pbar:
|
||||
@fraction:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_progress_bar_get_pulse_step ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@pbar:
|
||||
@Returns:
|
||||
|
||||
|
||||
|
||||
@@ -1,482 +0,0 @@
|
||||
<!-- ##### SECTION Title ##### -->
|
||||
GtkRecentManager
|
||||
|
||||
<!-- ##### SECTION Short_Description ##### -->
|
||||
Managing Recently Used Files
|
||||
|
||||
<!-- ##### SECTION Long_Description ##### -->
|
||||
<para>
|
||||
#GtkRecentManager provides a facility for adding, removing and
|
||||
looking up recently used files. Each recently used file is
|
||||
identified by its URI, and has meta-data associated to it, like
|
||||
the names and command lines of the applications that have
|
||||
registered it, the number of time each application has registered
|
||||
the same file, the mime type of the file and whether the file
|
||||
should be displayed only by the applications that have
|
||||
registered it.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The #GtkRecentManager acts like a database of all the recently
|
||||
used files. You can create new #GtkRecentManager objects, but
|
||||
it is more efficient to use the standard recent manager for
|
||||
the #GdkScreen so that informations about the recently used
|
||||
files is shared with other people using them. In case the
|
||||
default screen is being used, adding a new recently used
|
||||
file is as simple as:
|
||||
</para>
|
||||
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
GtkRecentManager *manager;
|
||||
|
||||
manager = gtk_recent_manager_get_default ();
|
||||
gtk_recent_manager_add_item (manager, file_uri);
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
|
||||
While looking up a recently used file is as simple as:
|
||||
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
GtkRecentManager *manager;
|
||||
GtkRecentInfo *info;
|
||||
GError *error = NULL;
|
||||
|
||||
manager = gtk_recent_manager_get_default ();
|
||||
info = gtk_recent_manager_lookup_item (manager, file_uri, &error);
|
||||
if (error)
|
||||
{
|
||||
g_warning ("Could not find the file: %s", error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Use the info object */
|
||||
gtk_recent_info_unref (info);
|
||||
}
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
|
||||
<para>
|
||||
Recently used files are supported since GTK+ 2.10.
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION See_Also ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### SECTION Stability_Level ##### -->
|
||||
|
||||
|
||||
<!-- ##### SECTION Image ##### -->
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkRecentManager ##### -->
|
||||
<para>
|
||||
Acts as a database of information about the list of recently
|
||||
used files. Normally, you retrieve the recent manager for a
|
||||
particular screen using gtk_recent_manager_get_for_screen()
|
||||
and it will contain information about current recent manager
|
||||
for that screen.</para>
|
||||
|
||||
|
||||
<!-- ##### SIGNAL GtkRecentManager::changed ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@recentmanager: the object which received the signal.
|
||||
|
||||
<!-- ##### ARG GtkRecentManager:filename ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkRecentManager:limit ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkRecentManager:size ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### STRUCT GtkRecentInfo ##### -->
|
||||
<para>
|
||||
Contains informations found when looking up an entry of the
|
||||
recently used files list.
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ##### STRUCT GtkRecentData ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@display_name:
|
||||
@description:
|
||||
@mime_type:
|
||||
@app_name:
|
||||
@app_exec:
|
||||
@groups:
|
||||
@is_private:
|
||||
|
||||
<!-- ##### MACRO GTK_RECENT_MANAGER_ERROR ##### -->
|
||||
<para>
|
||||
The #GQuark used for #GtkRecentManagerError errors.
|
||||
</para>
|
||||
|
||||
|
||||
|
||||
<!-- ##### ENUM GtkRecentManagerError ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@GTK_RECENT_MANAGER_ERROR_NOT_FOUND:
|
||||
@GTK_RECENT_MANAGER_ERROR_INVALID_URI:
|
||||
@GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING:
|
||||
@GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED:
|
||||
@GTK_RECENT_MANAGER_ERROR_READ:
|
||||
@GTK_RECENT_MANAGER_ERROR_WRITE:
|
||||
@GTK_RECENT_MANAGER_ERROR_UNKNOWN:
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_new ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@void:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_get_default ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@void:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_add_item ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@uri:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_add_full ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@uri:
|
||||
@recent_data:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_remove_item ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@uri:
|
||||
@error:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_lookup_item ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@uri:
|
||||
@error:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_has_item ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@uri:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_move_item ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@uri:
|
||||
@new_uri:
|
||||
@error:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_get_limit ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_set_limit ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@limit:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_get_items ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_manager_purge_items ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@manager:
|
||||
@error:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_ref ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_unref ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_uri ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_display_name ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_description ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_mime_type ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_added ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_modified ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_visited ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_private_hint ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_application_info ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@app_name:
|
||||
@app_exec:
|
||||
@count:
|
||||
@time_:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_applications ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@length:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_last_application ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_groups ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@length:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_has_group ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@group_name:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_has_application ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@app_name:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_icon ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@size:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_short_name ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_uri_display ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_get_age ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_is_local ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_exists ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_recent_info_match ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@info_a:
|
||||
@info_b:
|
||||
@Returns:
|
||||
|
||||
|
||||
@@ -131,7 +131,8 @@ The <structname>GtkTable</structname> structure holds the data for the actual ta
|
||||
Used to create a new table widget. An initial size must be given by
|
||||
specifying how many rows and columns the table should have, although
|
||||
this can be changed later with gtk_table_resize(). @rows and @columns
|
||||
must both be in the range 0 .. 65535.
|
||||
must both be in the range 1 .. 65535. For historical reasons, 0 is accepted
|
||||
as well and is silently interpreted as 1.
|
||||
</para>
|
||||
|
||||
@rows: The number of rows the new table should have.
|
||||
@@ -151,6 +152,16 @@ If you need to change a table's size <emphasis>after</emphasis> it has been crea
|
||||
@columns: The new number of columns.
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_table_get_size ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@table:
|
||||
@rows:
|
||||
@columns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_table_attach ##### -->
|
||||
<para>
|
||||
Adds a widget to a table. The number of 'cells' that a widget will occupy is
|
||||
|
||||
@@ -84,16 +84,6 @@ It is working (with minor issues) since 2.8.
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTextTag:background-stipple ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTextTag:background-stipple-set ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTextTag:direction ##### -->
|
||||
<para>
|
||||
|
||||
@@ -144,16 +134,6 @@ It is working (with minor issues) since 2.8.
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTextTag:foreground-stipple ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTextTag:foreground-stipple-set ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG GtkTextTag:indent ##### -->
|
||||
<para>
|
||||
|
||||
@@ -418,7 +398,6 @@ modified directly.
|
||||
@invisible:
|
||||
@bg_full_height:
|
||||
@editable:
|
||||
@realized:
|
||||
|
||||
<!-- ##### FUNCTION gtk_text_tag_new ##### -->
|
||||
<para>
|
||||
@@ -466,8 +445,6 @@ modified directly.
|
||||
|
||||
@bg_color:
|
||||
@fg_color:
|
||||
@bg_stipple:
|
||||
@fg_stipple:
|
||||
@rise:
|
||||
@underline:
|
||||
@strikethrough:
|
||||
|
||||
@@ -62,6 +62,15 @@ Limit the effect of grabs
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_window_group_get_current_grab ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@window_group:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_window_group_get_current_device_grab ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@@ -106,8 +106,7 @@ GtkWindow::default_width, GtkWindow::default_height:
|
||||
- default_height is -1 if unset, or >= 0 if
|
||||
a default height is set
|
||||
|
||||
GtkWindow::allow_grow, GtkWindow::resizable:
|
||||
- equivalent properties; changing one notifies on the other
|
||||
GtkWindow::resizable:
|
||||
- if FALSE, we set the min size to the max size in the geometry
|
||||
hints.
|
||||
- If the app programmer has called gtk_window_set_geometry_hints()
|
||||
|
||||
@@ -193,6 +193,7 @@ int main (int argc, char **argv)
|
||||
|
||||
for (node = toplevels; node; node = g_list_next (node))
|
||||
{
|
||||
GtkAllocation allocation;
|
||||
GdkWindow *window;
|
||||
WidgetInfo *info;
|
||||
XID id;
|
||||
@@ -202,13 +203,14 @@ int main (int argc, char **argv)
|
||||
|
||||
gtk_widget_show (info->window);
|
||||
|
||||
window = info->window->window;
|
||||
window = gtk_widget_get_window (info->window);
|
||||
gtk_widget_get_allocation (info->window, &allocation);
|
||||
|
||||
gtk_widget_show_now (info->window);
|
||||
gtk_widget_queue_draw_area (info->window,
|
||||
info->window->allocation.x, info->window->allocation.y,
|
||||
info->window->allocation.width, info->window->allocation.height);
|
||||
gdk_window_process_updates (info->window->window, TRUE);
|
||||
allocation.x, allocation.y,
|
||||
allocation.width, allocation.height);
|
||||
gdk_window_process_updates (window, TRUE);
|
||||
|
||||
while (gtk_events_pending ())
|
||||
{
|
||||
|
||||
+16
-8
@@ -42,6 +42,7 @@ adjust_size_callback (WidgetInfo *info)
|
||||
{
|
||||
Window toplevel;
|
||||
Window root;
|
||||
GdkWindow *window;
|
||||
gint tx;
|
||||
gint ty;
|
||||
guint twidth;
|
||||
@@ -51,8 +52,9 @@ adjust_size_callback (WidgetInfo *info)
|
||||
gint target_width = 0;
|
||||
gint target_height = 0;
|
||||
|
||||
toplevel = find_toplevel_window (GDK_WINDOW_XID (info->window->window));
|
||||
XGetGeometry (GDK_WINDOW_XDISPLAY (info->window->window),
|
||||
window = gtk_widget_get_window (info->window);
|
||||
toplevel = find_toplevel_window (GDK_WINDOW_XID (window));
|
||||
XGetGeometry (GDK_WINDOW_XDISPLAY (window),
|
||||
toplevel,
|
||||
&root, &tx, &ty, &twidth, &theight, &tborder_width, &tdepth);
|
||||
|
||||
@@ -279,13 +281,15 @@ create_combo_box_entry (void)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
GtkWidget *align;
|
||||
GtkWidget *child;
|
||||
|
||||
gtk_rc_parse_string ("style \"combo-box-entry-style\" {\n"
|
||||
" GtkComboBox::appears-as-list = 1\n"
|
||||
"}\n"
|
||||
"widget_class \"GtkComboBoxEntry\" style \"combo-box-entry-style\"\n" );
|
||||
widget = gtk_combo_box_entry_new_text ();
|
||||
gtk_entry_set_text (GTK_ENTRY (GTK_BIN (widget)->child), "Combo Box Entry");
|
||||
child = gtk_bin_get_child (GTK_BIN (widget));
|
||||
gtk_entry_set_text (GTK_ENTRY (child), "Combo Box Entry");
|
||||
align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
|
||||
gtk_container_add (GTK_CONTAINER (align), widget);
|
||||
|
||||
@@ -612,10 +616,12 @@ create_colorsel (void)
|
||||
WidgetInfo *info;
|
||||
GtkWidget *widget;
|
||||
GtkColorSelection *colorsel;
|
||||
GtkColorSelectionDialog *selection_dialog;
|
||||
GdkColor color;
|
||||
|
||||
widget = gtk_color_selection_dialog_new ("Color Selection Dialog");
|
||||
colorsel = GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (widget)->colorsel);
|
||||
selection_dialog = GTK_COLOR_SELECTION_DIALOG (widget);
|
||||
colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (selection_dialog));
|
||||
|
||||
color.red = 0x7979;
|
||||
color.green = 0xdbdb;
|
||||
@@ -794,7 +800,7 @@ create_message_dialog (void)
|
||||
GTK_MESSAGE_INFO,
|
||||
GTK_BUTTONS_OK,
|
||||
NULL);
|
||||
gtk_window_set_icon_name (GTK_WINDOW (widget), "gtk-copy");
|
||||
gtk_window_set_icon_name (GTK_WINDOW (widget), "edit-copy");
|
||||
gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (widget),
|
||||
"<b>Message Dialog</b>\n\nWith secondary text");
|
||||
return new_widget_info ("messagedialog", widget, ASIS);
|
||||
@@ -819,11 +825,11 @@ create_about_dialog (void)
|
||||
"copyright", "(C) 1997-2009 The GTK+ Team",
|
||||
"website", "http://www.gtk.org",
|
||||
"comments", "Program to demonstrate GTK+ functions.",
|
||||
"logo-icon-name", "gtk-about",
|
||||
"logo-icon-name", "help-about",
|
||||
"title", "About GTK+ Code Demos",
|
||||
"authors", authors,
|
||||
NULL);
|
||||
gtk_window_set_icon_name (GTK_WINDOW (widget), "gtk-about");
|
||||
gtk_window_set_icon_name (GTK_WINDOW (widget), "help-about");
|
||||
return new_widget_info ("aboutdialog", widget, ASIS);
|
||||
}
|
||||
|
||||
@@ -991,11 +997,13 @@ static WidgetInfo *
|
||||
create_volume_button (void)
|
||||
{
|
||||
GtkWidget *button, *widget;
|
||||
GtkWidget *plus_button;
|
||||
|
||||
button = gtk_volume_button_new ();
|
||||
gtk_scale_button_set_value (GTK_SCALE_BUTTON (button), 33);
|
||||
/* Hack: get the private dock */
|
||||
widget = GTK_SCALE_BUTTON (button)->plus_button->parent->parent->parent;
|
||||
plus_button = gtk_scale_button_get_plus_button (GTK_SCALE_BUTTON (button));
|
||||
widget = gtk_widget_get_parent (gtk_widget_get_parent (gtk_widget_get_parent (plus_button)));
|
||||
gtk_widget_show_all (widget);
|
||||
return new_widget_info ("volumebutton", widget, ASIS);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ EXTRA_DIST += \
|
||||
images/tictactoe.png
|
||||
|
||||
if HAVE_DOCBOOK
|
||||
html:
|
||||
html: gtk-tut.sgml
|
||||
if test -w $(srcdir); then \
|
||||
(cd $(srcdir); \
|
||||
db2html gtk-tut.sgml; \
|
||||
@@ -47,11 +47,13 @@ html:
|
||||
cp images/*.png html/images); \
|
||||
fi
|
||||
|
||||
pdf:
|
||||
pdf: gtk-tut.sgml
|
||||
if test -w $(srcdir); then \
|
||||
(cd $(srcdir); db2pdf gtk-tut.sgml); \
|
||||
fi
|
||||
|
||||
all-local: html
|
||||
|
||||
dist-hook: html
|
||||
cp -Rp $(srcdir)/html $(distdir)
|
||||
else
|
||||
|
||||
@@ -7599,7 +7599,6 @@ int main (int argc, char *argv[])
|
||||
dialog = gtk_dialog_new ();
|
||||
gtk_window_set_title (GTK_WINDOW (dialog), "GTKToolbar Tutorial");
|
||||
gtk_widget_set_size_request (GTK_WIDGET (dialog), 600, 300);
|
||||
GTK_WINDOW (dialog)->allow_shrink = TRUE;
|
||||
|
||||
/* typically we quit if someone tries to close us */
|
||||
g_signal_connect (dialog, "delete-event",
|
||||
|
||||
@@ -27,6 +27,7 @@ static gboolean area_event( GtkWidget *widget,
|
||||
gint handled = FALSE;
|
||||
gint response;
|
||||
GtkColorSelection *colorsel;
|
||||
GtkColorSelectionDialog *selection_dialog;
|
||||
|
||||
/* Check if we've received a button pressed event */
|
||||
|
||||
@@ -39,7 +40,8 @@ static gboolean area_event( GtkWidget *widget,
|
||||
colorseldlg = gtk_color_selection_dialog_new ("Select background color");
|
||||
|
||||
/* Get the ColorSelection widget */
|
||||
colorsel = GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (colorseldlg)->colorsel);
|
||||
selection_dialog = GTK_COLOR_SELECTION_DIALOG (colorseldlg);
|
||||
colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_colorsel (selection_dialog));
|
||||
|
||||
gtk_color_selection_set_previous_color (colorsel, &color);
|
||||
gtk_color_selection_set_current_color (colorsel, &color);
|
||||
|
||||
@@ -45,7 +45,7 @@ static gboolean
|
||||
window_expose_event (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
GdkRegion *region;
|
||||
cairo_region_t *region;
|
||||
GtkWidget *child;
|
||||
cairo_t *cr;
|
||||
|
||||
@@ -61,10 +61,11 @@ window_expose_event (GtkWidget *widget,
|
||||
child->allocation.y);
|
||||
|
||||
/* draw no more than our expose event intersects our child */
|
||||
region = gdk_region_rectangle (&child->allocation);
|
||||
gdk_region_intersect (region, event->region);
|
||||
region = cairo_region_create_rectangle (&child->allocation);
|
||||
cairo_region_intersect (region, region, event->region);
|
||||
gdk_cairo_region (cr, region);
|
||||
cairo_clip (cr);
|
||||
cairo_region_destroy (region);
|
||||
|
||||
/* composite, with a 50% opacity */
|
||||
cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
|
||||
|
||||
+56
-49
@@ -9,7 +9,7 @@ INTROSPECTION_COMPILER_ARGS = \
|
||||
--includedir=.
|
||||
|
||||
SUBDIRS = $(gdktarget) . tests
|
||||
DIST_SUBDIRS = win32 x11 quartz directfb tests
|
||||
DIST_SUBDIRS = win32 x11 quartz tests
|
||||
|
||||
CLEANFILES =
|
||||
|
||||
@@ -26,11 +26,9 @@ EXTRA_DIST += \
|
||||
makeenums.pl \
|
||||
makefile.msc \
|
||||
gdk.symbols \
|
||||
makegdkalias.pl \
|
||||
gdkenumtypes.c.template \
|
||||
gdkenumtypes.h.template \
|
||||
abicheck.sh \
|
||||
pltcheck.sh
|
||||
abicheck.sh
|
||||
|
||||
INCLUDES = \
|
||||
-DG_LOG_DOMAIN=\"Gdk\" \
|
||||
@@ -50,6 +48,7 @@ endif
|
||||
# since automake doesn't support conditionalized libsomething_la_LDFLAGS
|
||||
# we use the general approach here
|
||||
LDADD = \
|
||||
$(GTK_LINK_FLAGS) \
|
||||
-version-info $(LT_VERSION_INFO) \
|
||||
-export-dynamic \
|
||||
-rpath $(libdir) \
|
||||
@@ -82,9 +81,6 @@ gdk_public_h_sources = \
|
||||
gdkdnd.h \
|
||||
gdkdrawable.h \
|
||||
gdkevents.h \
|
||||
gdkfont.h \
|
||||
gdkgc.h \
|
||||
gdkimage.h \
|
||||
gdkinput.h \
|
||||
gdkkeys.h \
|
||||
gdkkeysyms.h \
|
||||
@@ -93,8 +89,6 @@ gdk_public_h_sources = \
|
||||
gdkpixmap.h \
|
||||
gdkprivate.h \
|
||||
gdkproperty.h \
|
||||
gdkregion.h \
|
||||
gdkrgb.h \
|
||||
gdkscreen.h \
|
||||
gdkselection.h \
|
||||
gdkspawn.h \
|
||||
@@ -106,15 +100,11 @@ gdk_public_h_sources = \
|
||||
gdk_built_public_sources = \
|
||||
gdkenumtypes.h
|
||||
|
||||
gdk_built_private_headers = \
|
||||
gdkalias.h
|
||||
|
||||
gdk_private_headers = \
|
||||
gdkinternals.h \
|
||||
gdkdeviceprivate.h \
|
||||
gdkintl.h \
|
||||
gdkpoly-generic.h \
|
||||
gdkregion-generic.h
|
||||
gdkpoly-generic.h
|
||||
|
||||
gdk_c_sources = \
|
||||
$(medialib_sources) \
|
||||
@@ -130,10 +120,7 @@ gdk_c_sources = \
|
||||
gdkdnd.c \
|
||||
gdkdraw.c \
|
||||
gdkevents.c \
|
||||
gdkfont.c \
|
||||
gdkgc.c \
|
||||
gdkglobals.c \
|
||||
gdkimage.c \
|
||||
gdkkeys.c \
|
||||
gdkkeyuni.c \
|
||||
gdkoffscreenwindow.c \
|
||||
@@ -141,10 +128,7 @@ gdk_c_sources = \
|
||||
gdkpixbuf-drawable.c \
|
||||
gdkpixbuf-render.c \
|
||||
gdkpixmap.c \
|
||||
gdkpolyreg-generic.c \
|
||||
gdkrectangle.c \
|
||||
gdkregion-generic.c \
|
||||
gdkrgb.c \
|
||||
gdkscreen.c \
|
||||
gdkselection.c \
|
||||
gdkvisual.c \
|
||||
@@ -152,12 +136,10 @@ gdk_c_sources = \
|
||||
gdkwindowimpl.c
|
||||
|
||||
gdk_built_sources = \
|
||||
gdkaliasdef.c \
|
||||
gdkenumtypes.c \
|
||||
gdkmarshalers.h \
|
||||
gdkmarshalers.c \
|
||||
$(gdk_built_public_sources) \
|
||||
$(gdk_built_private_headers)
|
||||
$(gdk_built_public_sources)
|
||||
|
||||
#
|
||||
# setup GDK sources and their dependencies
|
||||
@@ -166,17 +148,13 @@ gdk_built_sources = \
|
||||
gdkincludedir = $(includedir)/gtk-3.0/gdk
|
||||
gdkinclude_HEADERS = $(gdk_public_h_sources) $(gdk_built_public_sources)
|
||||
|
||||
common_sources = \
|
||||
$(gdk_private_headers) \
|
||||
$(gdk_c_sources) \
|
||||
common_sources = \
|
||||
$(gdk_private_headers) \
|
||||
$(gdk_c_sources) \
|
||||
gdkenumtypes.c \
|
||||
gdkmarshalers.c \
|
||||
gdkmarshalers.h
|
||||
|
||||
libgdk_directfb_3_0_la_SOURCES = $(common_sources)
|
||||
libgdk_directfb_3_0_la_LIBADD = directfb/libgdk-directfb.la $(GDK_DEP_LIBS)
|
||||
libgdk_directfb_3_0_la_LDFLAGS = $(LDADD)
|
||||
|
||||
libgdk_x11_3_0_la_SOURCES = $(common_sources)
|
||||
libgdk_x11_3_0_la_LIBADD = x11/libgdk-x11.la $(GDK_DEP_LIBS)
|
||||
libgdk_x11_3_0_la_LDFLAGS = $(LDADD)
|
||||
@@ -192,30 +170,65 @@ libgdk_win32_3_0_la_LDFLAGS = -Wl,win32/rc/gdk-win32-res.o -export-symbols $(src
|
||||
|
||||
if HAVE_INTROSPECTION
|
||||
|
||||
introspection_files = \
|
||||
$(gdk_public_h_sources) \
|
||||
$(gdk_c_sources) \
|
||||
gdkenumtypes.c \
|
||||
introspection_files = \
|
||||
$(gdk_public_h_sources) \
|
||||
$(gdk_c_sources) \
|
||||
gdkenumtypes.c \
|
||||
gdkenumtypes.h
|
||||
|
||||
Gdk-3.0.gir: $(gdktargetlib) Makefile
|
||||
Gdk_3_0_gir_SCANNERFLAGS = --strip-prefix=Gdk
|
||||
Gdk_3_0_gir_INCLUDES = Gio-2.0 GdkPixbuf-2.0 Pango-1.0
|
||||
Gdk_3_0_gir_INCLUDES = Gio-2.0 GdkPixbuf-2.0 Pango-1.0 cairo-1.0
|
||||
Gdk_3_0_gir_LIBS = $(gdktargetlib)
|
||||
Gdk_3_0_gir_FILES = $(addprefix $(srcdir)/,$(introspection_files))
|
||||
Gdk_3_0_gir_FILES = $(introspection_files)
|
||||
Gdk_3_0_gir_CFLAGS = $(INCLUDES)
|
||||
INTROSPECTION_GIRS += Gdk-3.0.gir
|
||||
|
||||
if USE_X11
|
||||
x11_introspection_files = \
|
||||
x11/*.c \
|
||||
x11_introspection_files = \
|
||||
x11/checksettings.c \
|
||||
x11/gdkapplaunchcontext-x11.c \
|
||||
x11/gdkasync.c \
|
||||
x11/gdkcolor-x11.c \
|
||||
x11/gdkcursor-x11.c \
|
||||
x11/gdkdevice-core.c \
|
||||
x11/gdkdevicemanager-core.c \
|
||||
x11/gdkdevicemanager-x11.c \
|
||||
x11/gdkdevicemanager-xi2.c \
|
||||
x11/gdkdevicemanager-xi.c \
|
||||
x11/gdkdevice-xi2.c \
|
||||
x11/gdkdevice-xi.c \
|
||||
x11/gdkdisplay-x11.c \
|
||||
x11/gdkdnd-x11.c \
|
||||
x11/gdkdrawable-x11.c \
|
||||
x11/gdkeventsource.c \
|
||||
x11/gdkeventtranslator.c \
|
||||
x11/gdkgeometry-x11.c \
|
||||
x11/gdkglobals-x11.c \
|
||||
x11/gdkim-x11.c \
|
||||
x11/gdkinput.c \
|
||||
x11/gdkkeys-x11.c \
|
||||
x11/gdkmain-x11.c \
|
||||
x11/gdkpixmap-x11.c \
|
||||
x11/gdkproperty-x11.c \
|
||||
x11/gdkscreen-x11.c \
|
||||
x11/gdkselection-x11.c \
|
||||
x11/gdksettings.c \
|
||||
x11/gdkspawn-x11.c \
|
||||
x11/gdktestutils-x11.c \
|
||||
x11/gdkvisual-x11.c \
|
||||
x11/gdkwindow-x11.c \
|
||||
x11/gdkxftdefaults.c \
|
||||
x11/gdkxid.c \
|
||||
x11/xsettings-client.c \
|
||||
x11/xsettings-common.c \
|
||||
x11/gdkx.h
|
||||
|
||||
GdkX11-3.0.gir: $(gdktargetlib) Makefile
|
||||
GdkX11-3.0.gir: $(gdktargetlib) Gdk-3.0.gir Makefile
|
||||
GdkX11_3_0_gir_SCANNERFLAGS = --strip-prefix=gdk_x11
|
||||
GdkX11_3_0_gir_INCLUDES = Gio-2.0 Gdk-3.0 GdkPixbuf-2.0 Pango-1.0 xlib-2.0
|
||||
GdkX11_3_0_gir_LIBS = $(gdktargetlib)
|
||||
GdkX11_3_0_gir_FILES = $(addprefix $(srcdir)/,$(x11_introspection_files))
|
||||
GdkX11_3_0_gir_FILES = $(x11_introspection_files)
|
||||
GdkX11_3_0_gir_CFLAGS = $(INCLUDES) -L$(top_builddir)/gdk
|
||||
INTROSPECTION_GIRS += GdkX11-3.0.gir
|
||||
endif # USE_X11
|
||||
@@ -261,21 +274,15 @@ endif
|
||||
gdk.def: gdk.symbols
|
||||
(echo -e EXPORTS; $(CPP) -P -DALL_FILES -DGDK_WINDOWING_WIN32 -DINCLUDE_VARIABLES - <$(srcdir)/gdk.symbols | sed -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > $(srcdir)/gdk.def
|
||||
|
||||
gdkalias.h: gdk.symbols
|
||||
$(PERL) $(srcdir)/makegdkalias.pl < $(srcdir)/gdk.symbols > gdkalias.h
|
||||
|
||||
gdkaliasdef.c: gdk.symbols
|
||||
$(PERL) $(srcdir)/makegdkalias.pl -def < $(srcdir)/gdk.symbols > gdkaliasdef.c
|
||||
|
||||
TESTS_ENVIRONMENT = srcdir="$(srcdir)"
|
||||
if OS_LINUX
|
||||
TESTS = abicheck.sh pltcheck.sh
|
||||
TESTS = abicheck.sh
|
||||
endif
|
||||
|
||||
|
||||
lib_LTLIBRARIES = $(gdktargetlib)
|
||||
|
||||
EXTRA_LTLIBRARIES = libgdk-x11-3.0.la libgdk-win32-3.0.la libgdk-quartz-3.0.la libgdk-directfb-3.0.la
|
||||
EXTRA_LTLIBRARIES = libgdk-x11-3.0.la libgdk-win32-3.0.la libgdk-quartz-3.0.la
|
||||
|
||||
MAINTAINERCLEANFILES = $(gdk_built_sources) stamp-gdkenumtypes.h
|
||||
EXTRA_DIST += $(gdk_built_sources)
|
||||
@@ -325,7 +332,7 @@ gdkmarshalers.h: @REBUILD@ gdkmarshalers.list
|
||||
&& mv gdkmarshalers-h.tmp gdkmarshalers.h \
|
||||
|| ( rm -f gdkmarshalers-h.tmp && exit 1)
|
||||
gdkmarshalers.c: @REBUILD@ gdkmarshalers.list
|
||||
(echo "#include \"gdkalias.h\""; $(GLIB_GENMARSHAL) --prefix=_gdk_marshal $(srcdir)/gdkmarshalers.list --body) > gdkmarshalers-c.tmp \
|
||||
$(GLIB_GENMARSHAL) --prefix=_gdk_marshal $(srcdir)/gdkmarshalers.list --body > gdkmarshalers-c.tmp \
|
||||
&& mv gdkmarshalers-c.tmp gdkmarshalers.c \
|
||||
|| ( rm -f gdkmarshalers-c.tmp && exit 1 )
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
The GDK DirectFB backend was written by
|
||||
|
||||
Denis Oliver Kropp <dok@directfb.org>
|
||||
Sven Neumann <neo@directfb.org>
|
||||
|
||||
Large parts of the code are based on other GDK backends
|
||||
especially the linuxfb backend which was written mainly
|
||||
by Alex Larsson <alexl@redhat.com>.
|
||||
|
||||
|
||||
The upgrade to gtk 2.8.x was done by
|
||||
|
||||
Michael Emmel <mike.emmel@gmail.com>
|
||||
|
||||
|
||||
Extensive help and support and code was recieved from the Debian
|
||||
community especially the Debian installer team who bravely chose to
|
||||
use the gdk directfb port for the graphical debian installer. In
|
||||
particular
|
||||
|
||||
Attilio Fiandrotti <fiandro@tiscalinet.it>
|
||||
Davide Viti <zinosat@tiscali.it>
|
||||
|
||||
for there tireless work bringing the backend from a small project to
|
||||
stability.
|
||||
|
||||
And finally thanks to the Extremadura goverment for bringing the
|
||||
directfb developers and debian installer team together for a workshop.
|
||||
@@ -1,60 +0,0 @@
|
||||
## Makefile.am for gtk+/gdk/gdk-directfb
|
||||
include $(top_srcdir)/Makefile.decl
|
||||
|
||||
libgdkincludedir = $(includedir)/gtk-3.0/gdk
|
||||
|
||||
INCLUDES = \
|
||||
-DG_LOG_DOMAIN=\"Gdk-DirectFB\" \
|
||||
-DGDK_COMPILATION \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/gdk \
|
||||
-I$(top_builddir)/gdk \
|
||||
-DG_DISABLE_DEPRECATED \
|
||||
@GTK_DEBUG_FLAGS@ \
|
||||
@GDK_DEP_CFLAGS@
|
||||
|
||||
LDADDS = \
|
||||
@GDK_DEP_LIBS@
|
||||
|
||||
noinst_LTLIBRARIES = libgdk-directfb.la
|
||||
|
||||
libgdk_directfb_la_SOURCES = \
|
||||
gdkapplaunchcontext-directfb.c \
|
||||
gdkcolor-directfb.c \
|
||||
gdkcursor-directfb.c \
|
||||
gdkdnd-directfb.c \
|
||||
gdkdisplay-directfb.c \
|
||||
gdkdisplay-directfb.h \
|
||||
gdkdrawable-directfb.c \
|
||||
gdkevents-directfb.c \
|
||||
gdkfont-directfb.c \
|
||||
gdkgc-directfb.c \
|
||||
gdkgeometry-directfb.c \
|
||||
gdkglobals-directfb.c \
|
||||
gdkim-directfb.c \
|
||||
gdkimage-directfb.c \
|
||||
gdkinput-directfb.c \
|
||||
gdkinput-directfb.h \
|
||||
gdkkeys-directfb.c \
|
||||
gdkmain-directfb.c \
|
||||
gdkpixmap-directfb.c \
|
||||
gdkprivate-directfb.h \
|
||||
gdkproperty-directfb.c \
|
||||
gdkscreen-directfb.c \
|
||||
gdkselection-directfb.c \
|
||||
gdkspawn-directfb.c \
|
||||
gdktestutils-directfb.c \
|
||||
gdkvisual-directfb.c \
|
||||
gdkdirectfb.h \
|
||||
gdkwindow-directfb.c \
|
||||
gdkwindowid.c \
|
||||
x-cursors.xbm
|
||||
|
||||
libgdkinclude_HEADERS = \
|
||||
gdkdirectfb.h \
|
||||
gdkprivate-directfb.h
|
||||
|
||||
|
||||
EXTRA_DIST += AUTHORS README TODO
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
@@ -1,106 +0,0 @@
|
||||
README for GDK-DirectFB
|
||||
------------------------
|
||||
|
||||
This is the GDK backend that allows GTK to work on top of DirectFB.
|
||||
|
||||
Important:
|
||||
The current code does not pass through directfb passed on the gtk
|
||||
apps command line on to directfb you need to set the environment variable
|
||||
DFBARGS.
|
||||
Example:
|
||||
export DFBARGS=system=sdl
|
||||
|
||||
DirectFB is a hardware abstraction layer on top of the Linux
|
||||
frame buffer that provides drawing functions, a window stack and
|
||||
support for input devices. The code you find here is a backend for
|
||||
GDK, the drawing kit used by GTK+.
|
||||
|
||||
|
||||
As DirectFB provides drawing functions, a windowing stack and manages
|
||||
input devices, this is a lightweight GDK port. Some parts of GDK
|
||||
require higher level drawing functions that are supported by
|
||||
cairo on DirectFB.
|
||||
GDK also uses some feature like bitmaps that do not map well to
|
||||
modern graphics hardware and are for that reason not yet supported in
|
||||
this snapshot. See the file TODO for a list of missing features.
|
||||
|
||||
|
||||
If you want GTK+ to draw window decorations for you, edit the file
|
||||
gtk/gtkwindow-decorate.c and uncomment the line that says
|
||||
#define DECORATE_WINDOWS.
|
||||
|
||||
|
||||
GTK+ application compiled with this version of GTK+ understand some
|
||||
additional command-line options special to the DirectFB GDK backend:
|
||||
|
||||
--transparent-unfocused Makes unfocused windows translucent.
|
||||
|
||||
--argb-font Use ARGB surfaces for fonts, needed for some
|
||||
broken hardware.
|
||||
|
||||
--glyph-surface-cache Lets you tune the size of the glyph cache,
|
||||
the default is to cache glyphs from 8 faces.
|
||||
|
||||
--enable-color-keying This option turns on a hack that does the
|
||||
following:
|
||||
|
||||
(1) It overrides the color used to draw the window background to
|
||||
gdk_directfb_bg_color as defined in gdkprivate-directfb.h.
|
||||
Note that the alpha value only takes effect if the window has
|
||||
an alpha channel.
|
||||
(2) It also draws all rectangles that are drawn in
|
||||
gdk_directfb_bg_color_key in this color (gdk_directfb_bg_color).
|
||||
|
||||
This feature can be used to create windows with translucent background.
|
||||
|
||||
Additionally all DirectFB command-line options as described in the
|
||||
directfbrc man-page are supported.
|
||||
|
||||
|
||||
This version of GTK+ also introduces two new functions that are special
|
||||
to the DirectFB version. You need to include gdk/gdkdirectfb.h to be
|
||||
able to use them.
|
||||
|
||||
gdk_directfb_window_set_opacity (GdkWindow *window, guchar opacity));
|
||||
|
||||
This function sets the overall opacity for toplevel GDK windows.
|
||||
|
||||
gdk_directfb_visual_by_format (DFBSurfacePixelFormat pixel_format);
|
||||
|
||||
This function returns a GdkVisual for a DirectFB pixelformat and
|
||||
thus gives you control over the window surface. If for example
|
||||
you want to create a window with alpha channel you can use some
|
||||
code like the following:
|
||||
|
||||
visual = gdk_directfb_visual_by_format (DSPF_ARGB);
|
||||
cmap = gdk_colormap_new (visual, FALSE);
|
||||
gtk_widget_push_colormap (cmap);
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_widget_pop_colormap ();
|
||||
g_object_unref (cmap);
|
||||
|
||||
Don't use these functions if you want to be able to compile your
|
||||
application against GTK+-X11 or other GTK+ versions.
|
||||
|
||||
|
||||
If you are developing a GTK+ application for GTK+-DirectFB make sure
|
||||
you use the gtk+-directfb-2.0.pc file when calling pkg-config to get
|
||||
the correct compiler and linker flags for GTK+-DirectFB:
|
||||
|
||||
pkg-config --cflags gtk+-directfb-2.0
|
||||
pkg-config --libs gtk+-directfb-2.0
|
||||
|
||||
|
||||
See the file TODO for a list of unimplemented features.
|
||||
|
||||
|
||||
Detailed and up-to-date instructions on how to build a complete
|
||||
set of GTK-DFB libraries is avalable in the WIKI of the DirectFB project
|
||||
at the address
|
||||
http://www.directfb.org/wiki/index.php/Projects:GTK_on_DirectFB
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published
|
||||
by the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
@@ -1,58 +0,0 @@
|
||||
A list of missing things and known bugs in the DirectFB GDK backend:
|
||||
|
||||
- Implement more GDK drawing functions. The most important ones
|
||||
(including XOR) do work now. Other drawing functions are rarely
|
||||
used and would need support from DirectFB.
|
||||
- Implemenent extended input devices. Shouldn't be too hard.
|
||||
- Look into DND and selections. DND seems to work inside one
|
||||
application at least.
|
||||
- Consider using the recently added glyph cache in PangoFT2 to
|
||||
implement our glyph surface cache. Probably limit the number
|
||||
of cached glyphs or the size of the surface cache instead of
|
||||
keeping all glyphs from a number of fonts in the cache.
|
||||
|
||||
Some things that will probably never happen:
|
||||
|
||||
- Line styles, joining and related stuff. We could use code from the
|
||||
LinuxFB backend but it seems to be bloat for most applications.
|
||||
Implementing dashed lines would probably make sense and shouldn't
|
||||
be too hard.
|
||||
- Bitmaps (they are partly supported) and masks. This stuff should
|
||||
be entirely deprecated. Use real alpha channels instead!
|
||||
|
||||
|
||||
This is a simple list of unimplemented function stubs and there file
|
||||
to see the implementation check the x11 dir.
|
||||
Its not started yet.
|
||||
|
||||
gdkcolor-directfb.c
|
||||
gdkcursor-directfb.c
|
||||
gdkdisplay-directfb.c
|
||||
gdkdnd-directfb.c
|
||||
gdkdrawable-directfb.c
|
||||
gdkevents-directfb.c
|
||||
gdkfont-directfb.c
|
||||
gdkgc-directfb.c
|
||||
gdkgeometry-directfb.c
|
||||
gdkglobals-directfb.c
|
||||
gdkimage-directfb.c
|
||||
gdkim-directfb.c
|
||||
gdkinput-directfb.c
|
||||
gdkkeys-directfb.c
|
||||
gdk_keymap_lookup_key
|
||||
gdk_keyval_convert_case
|
||||
gdkmain-directfb.c
|
||||
gdkpixmap-directfb.c
|
||||
gdkproperty-directfb.c
|
||||
gdkscreen-directfb.c
|
||||
gdkselection-directfb.c
|
||||
gdkspawn-directfb.c
|
||||
gdkvisual-directfb.c
|
||||
gdkwindow-directfb.c
|
||||
gdkwindowid.c
|
||||
glyphsurfacecache.c
|
||||
|
||||
|
||||
NOTES:
|
||||
event filter callbacks missing see the x11 impl
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
/* gdkapplaunchcontext-directfb.c - Gtk+ implementation for GAppLaunchContext
|
||||
|
||||
Copyright (C) 2007 Red Hat, Inc.
|
||||
|
||||
The Gnome 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.
|
||||
|
||||
The Gnome 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 the Gnome Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
|
||||
Author: Matthias Clasen <mclasen@redhat.com>
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "gdkapplaunchcontext.h"
|
||||
|
||||
|
||||
char *
|
||||
_gdk_windowing_get_startup_notify_id (GAppLaunchContext *context,
|
||||
GAppInfo *info,
|
||||
GList *files)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_windowing_launch_failed (GAppLaunchContext *context,
|
||||
const char *startup_notify_id)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -1,514 +0,0 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GTK+ Team.
|
||||
*/
|
||||
|
||||
/*
|
||||
* GTK+ DirectFB backend
|
||||
* Copyright (C) 2001-2002 convergence integrated media GmbH
|
||||
* Copyright (C) 2002 convergence GmbH
|
||||
* Written by Denis Oliver Kropp <dok@convergence.de> and
|
||||
* Sven Neumann <sven@convergence.de>
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "gdk.h"
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "gdkcolor.h"
|
||||
#include "gdkinternals.h"
|
||||
#include "gdkdirectfb.h"
|
||||
#include "gdkprivate-directfb.h"
|
||||
#include "gdkalias.h"
|
||||
|
||||
|
||||
typedef struct {
|
||||
GdkColorInfo *info;
|
||||
IDirectFBPalette *palette;
|
||||
} GdkColormapPrivateDirectFB;
|
||||
|
||||
|
||||
static void gdk_colormap_finalize (GObject *object);
|
||||
|
||||
static gint gdk_colormap_alloc_pseudocolors (GdkColormap *colormap,
|
||||
GdkColor *colors,
|
||||
gint ncolors,
|
||||
gboolean writeable,
|
||||
gboolean best_match,
|
||||
gboolean *success);
|
||||
static void gdk_directfb_allocate_color_key (GdkColormap *colormap);
|
||||
|
||||
|
||||
G_DEFINE_TYPE (GdkColormap, gdk_colormap, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
gdk_colormap_init (GdkColormap *colormap)
|
||||
{
|
||||
colormap->size = 0;
|
||||
colormap->colors = NULL;
|
||||
colormap->windowing_data = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_colormap_class_init (GdkColormapClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = gdk_colormap_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_colormap_finalize (GObject *object)
|
||||
{
|
||||
GdkColormap *colormap = GDK_COLORMAP (object);
|
||||
GdkColormapPrivateDirectFB *private = colormap->windowing_data;
|
||||
|
||||
g_free (colormap->colors);
|
||||
|
||||
if (private)
|
||||
{
|
||||
g_free (private->info);
|
||||
|
||||
if (private->palette)
|
||||
private->palette->Release (private->palette);
|
||||
|
||||
g_free (private);
|
||||
colormap->windowing_data = NULL;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (gdk_colormap_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
GdkColormap*
|
||||
gdk_colormap_new (GdkVisual *visual,
|
||||
gboolean private_cmap)
|
||||
{
|
||||
GdkColormap *colormap;
|
||||
gint i;
|
||||
|
||||
g_return_val_if_fail (visual != NULL, NULL);
|
||||
|
||||
colormap = g_object_new (gdk_colormap_get_type (), NULL);
|
||||
colormap->visual = visual;
|
||||
colormap->size = visual->colormap_size;
|
||||
|
||||
switch (visual->type)
|
||||
{
|
||||
case GDK_VISUAL_PSEUDO_COLOR:
|
||||
{
|
||||
IDirectFB *dfb = _gdk_display->directfb;
|
||||
IDirectFBPalette *palette;
|
||||
GdkColormapPrivateDirectFB *private;
|
||||
DFBPaletteDescription dsc;
|
||||
|
||||
dsc.flags = DPDESC_SIZE;
|
||||
dsc.size = colormap->size;
|
||||
if (!dfb->CreatePalette (dfb, &dsc, &palette))
|
||||
return NULL;
|
||||
|
||||
colormap->colors = g_new0 (GdkColor, colormap->size);
|
||||
|
||||
private = g_new0 (GdkColormapPrivateDirectFB, 1);
|
||||
private->info = g_new0 (GdkColorInfo, colormap->size);
|
||||
|
||||
if (visual == gdk_visual_get_system())
|
||||
{
|
||||
/* save the first (transparent) palette entry */
|
||||
private->info[0].ref_count++;
|
||||
}
|
||||
|
||||
private->palette = palette;
|
||||
|
||||
colormap->windowing_data = private;
|
||||
|
||||
gdk_directfb_allocate_color_key (colormap);
|
||||
}
|
||||
break;
|
||||
|
||||
case GDK_VISUAL_STATIC_COLOR:
|
||||
colormap->colors = g_new0 (GdkColor, colormap->size);
|
||||
for (i = 0; i < colormap->size; i++)
|
||||
{
|
||||
GdkColor *color = colormap->colors + i;
|
||||
|
||||
color->pixel = i;
|
||||
color->red = (i & 0xE0) << 8 | (i & 0xE0);
|
||||
color->green = (i & 0x1C) << 11 | (i & 0x1C) << 3;
|
||||
color->blue = (i & 0x03) << 14 | (i & 0x03) << 6;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return colormap;
|
||||
}
|
||||
|
||||
GdkScreen*
|
||||
gdk_colormap_get_screen (GdkColormap *cmap)
|
||||
{
|
||||
return _gdk_screen;
|
||||
}
|
||||
|
||||
GdkColormap*
|
||||
gdk_screen_get_system_colormap (GdkScreen *screen)
|
||||
{
|
||||
static GdkColormap *colormap = NULL;
|
||||
|
||||
if (!colormap)
|
||||
{
|
||||
GdkVisual *visual = gdk_visual_get_system();
|
||||
|
||||
/* special case PSEUDO_COLOR to use the system palette */
|
||||
if (visual->type == GDK_VISUAL_PSEUDO_COLOR)
|
||||
{
|
||||
GdkColormapPrivateDirectFB *private;
|
||||
IDirectFBSurface *surface;
|
||||
|
||||
colormap = g_object_new (gdk_colormap_get_type (), NULL);
|
||||
|
||||
colormap->visual = visual;
|
||||
colormap->size = visual->colormap_size;
|
||||
colormap->colors = g_new0 (GdkColor, colormap->size);
|
||||
|
||||
private = g_new0 (GdkColormapPrivateDirectFB, 1);
|
||||
private->info = g_new0 (GdkColorInfo, colormap->size);
|
||||
|
||||
surface=GDK_WINDOW_IMPL_DIRECTFB (
|
||||
GDK_WINDOW_OBJECT (_gdk_parent_root)->impl)->drawable.surface;
|
||||
surface->GetPalette (surface, &private->palette);
|
||||
|
||||
colormap->windowing_data = private;
|
||||
|
||||
/* save the first (transparent) palette entry */
|
||||
private->info[0].ref_count++;
|
||||
|
||||
gdk_directfb_allocate_color_key (colormap);
|
||||
}
|
||||
else
|
||||
{
|
||||
colormap = gdk_colormap_new (visual, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
return colormap;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_colormap_free_colors (GdkColormap *colormap,
|
||||
const GdkColor *colors,
|
||||
gint ncolors)
|
||||
{
|
||||
GdkColormapPrivateDirectFB *private;
|
||||
gint i;
|
||||
|
||||
g_return_if_fail (GDK_IS_COLORMAP (colormap));
|
||||
g_return_if_fail (colors != NULL);
|
||||
|
||||
private = colormap->windowing_data;
|
||||
if (!private)
|
||||
return;
|
||||
|
||||
for (i = 0; i < ncolors; i++)
|
||||
{
|
||||
gint index = colors[i].pixel;
|
||||
|
||||
if (index < 0 || index >= colormap->size)
|
||||
continue;
|
||||
|
||||
if (private->info[index].ref_count)
|
||||
private->info[index].ref_count--;
|
||||
}
|
||||
}
|
||||
|
||||
gint
|
||||
gdk_colormap_alloc_colors (GdkColormap *colormap,
|
||||
GdkColor *colors,
|
||||
gint ncolors,
|
||||
gboolean writeable,
|
||||
gboolean best_match,
|
||||
gboolean *success)
|
||||
{
|
||||
GdkVisual *visual;
|
||||
gint i;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_COLORMAP (colormap), 0);
|
||||
g_return_val_if_fail (colors != NULL, 0);
|
||||
g_return_val_if_fail (success != NULL, 0);
|
||||
|
||||
switch (colormap->visual->type)
|
||||
{
|
||||
case GDK_VISUAL_TRUE_COLOR:
|
||||
visual = colormap->visual;
|
||||
|
||||
for (i = 0; i < ncolors; i++)
|
||||
{
|
||||
colors[i].pixel =
|
||||
(((colors[i].red
|
||||
>> (16 - visual->red_prec)) << visual->red_shift) +
|
||||
((colors[i].green
|
||||
>> (16 - visual->green_prec)) << visual->green_shift) +
|
||||
((colors[i].blue
|
||||
>> (16 - visual->blue_prec)) << visual->blue_shift));
|
||||
|
||||
success[i] = TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
case GDK_VISUAL_PSEUDO_COLOR:
|
||||
return gdk_colormap_alloc_pseudocolors (colormap,
|
||||
colors, ncolors,
|
||||
writeable, best_match,
|
||||
success);
|
||||
break;
|
||||
|
||||
case GDK_VISUAL_STATIC_COLOR:
|
||||
for (i = 0; i < ncolors; i++)
|
||||
{
|
||||
colors[i].pixel = (((colors[i].red & 0xE000) >> 8) |
|
||||
((colors[i].green & 0xE000) >> 11) |
|
||||
((colors[i].blue & 0xC000) >> 14));
|
||||
success[i] = TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
for (i = 0; i < ncolors; i++)
|
||||
success[i] = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_colormap_query_color (GdkColormap *colormap,
|
||||
gulong pixel,
|
||||
GdkColor *result)
|
||||
{
|
||||
GdkVisual *visual;
|
||||
|
||||
g_return_if_fail (GDK_IS_COLORMAP (colormap));
|
||||
|
||||
visual = gdk_colormap_get_visual (colormap);
|
||||
|
||||
switch (visual->type)
|
||||
{
|
||||
case GDK_VISUAL_TRUE_COLOR:
|
||||
result->red = 65535. *
|
||||
(gdouble)((pixel & visual->red_mask) >> visual->red_shift) /
|
||||
((1 << visual->red_prec) - 1);
|
||||
|
||||
result->green = 65535. *
|
||||
(gdouble)((pixel & visual->green_mask) >> visual->green_shift) /
|
||||
((1 << visual->green_prec) - 1);
|
||||
|
||||
result->blue = 65535. *
|
||||
(gdouble)((pixel & visual->blue_mask) >> visual->blue_shift) /
|
||||
((1 << visual->blue_prec) - 1);
|
||||
break;
|
||||
|
||||
case GDK_VISUAL_STATIC_COLOR:
|
||||
case GDK_VISUAL_PSEUDO_COLOR:
|
||||
if (pixel >= 0 && pixel < colormap->size)
|
||||
{
|
||||
result->red = colormap->colors[pixel].red;
|
||||
result->green = colormap->colors[pixel].green;
|
||||
result->blue = colormap->colors[pixel].blue;
|
||||
}
|
||||
else
|
||||
g_warning ("gdk_colormap_query_color: pixel outside colormap");
|
||||
break;
|
||||
|
||||
case GDK_VISUAL_DIRECT_COLOR:
|
||||
case GDK_VISUAL_GRAYSCALE:
|
||||
case GDK_VISUAL_STATIC_GRAY:
|
||||
/* unsupported */
|
||||
g_assert_not_reached ();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
IDirectFBPalette *
|
||||
gdk_directfb_colormap_get_palette (GdkColormap *colormap)
|
||||
{
|
||||
GdkColormapPrivateDirectFB *private;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_COLORMAP (colormap), NULL);
|
||||
|
||||
private = colormap->windowing_data;
|
||||
|
||||
if (private && private->palette)
|
||||
return private->palette;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static gint
|
||||
gdk_colormap_alloc_pseudocolors (GdkColormap *colormap,
|
||||
GdkColor *colors,
|
||||
gint ncolors,
|
||||
gboolean writeable,
|
||||
gboolean best_match,
|
||||
gboolean *success)
|
||||
{
|
||||
GdkColormapPrivateDirectFB *private = colormap->windowing_data;
|
||||
IDirectFBPalette *palette;
|
||||
gint i, j;
|
||||
gint remaining = ncolors;
|
||||
|
||||
palette = private->palette;
|
||||
|
||||
for (i = 0; i < ncolors; i++)
|
||||
{
|
||||
guint index;
|
||||
DFBColor lookup = { 0xFF,
|
||||
colors[i].red >> 8,
|
||||
colors[i].green >> 8,
|
||||
colors[i].blue >> 8 };
|
||||
|
||||
success[i] = FALSE;
|
||||
|
||||
if (writeable)
|
||||
{
|
||||
/* look for an empty slot and allocate a new color */
|
||||
for (j = 0; j < colormap->size; j++)
|
||||
if (private->info[j].ref_count == 0)
|
||||
{
|
||||
index = j;
|
||||
|
||||
palette->SetEntries (palette, &lookup, 1, index);
|
||||
|
||||
private->info[index].flags = GDK_COLOR_WRITEABLE;
|
||||
|
||||
colors[i].pixel = index;
|
||||
colormap->colors[index] = colors[i];
|
||||
|
||||
goto allocated;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
palette->FindBestMatch (palette,
|
||||
lookup.r, lookup.g, lookup.b, lookup.a,
|
||||
&index);
|
||||
|
||||
if (index < 0 || index > colormap->size)
|
||||
continue;
|
||||
|
||||
/* check if we have an exact (non-writeable) match */
|
||||
if (private->info[index].ref_count &&
|
||||
!(private->info[index].flags & GDK_COLOR_WRITEABLE))
|
||||
{
|
||||
DFBColor entry;
|
||||
|
||||
palette->GetEntries (palette, &entry, 1, index);
|
||||
|
||||
if (entry.a == 0xFF &&
|
||||
entry.r == lookup.r && entry.g == lookup.g && entry.b == lookup.b)
|
||||
{
|
||||
colors[i].pixel = index;
|
||||
|
||||
goto allocated;
|
||||
}
|
||||
}
|
||||
|
||||
/* look for an empty slot and allocate a new color */
|
||||
for (j = 0; j < colormap->size; j++)
|
||||
if (private->info[j].ref_count == 0)
|
||||
{
|
||||
index = j;
|
||||
|
||||
palette->SetEntries (palette, &lookup, 1, index);
|
||||
private->info[index].flags = 0;
|
||||
|
||||
colors[i].pixel = index;
|
||||
colormap->colors[index] = colors[i];
|
||||
|
||||
goto allocated;
|
||||
}
|
||||
|
||||
/* if that failed, use the best match */
|
||||
if (best_match &&
|
||||
!(private->info[index].flags & GDK_COLOR_WRITEABLE))
|
||||
{
|
||||
#if 0
|
||||
g_print ("best match for (%d %d %d) ",
|
||||
colormap->colors[index].red,
|
||||
colormap->colors[index].green,
|
||||
colormap->colors[index].blue);
|
||||
#endif
|
||||
|
||||
colors[i].pixel = index;
|
||||
|
||||
goto allocated;
|
||||
}
|
||||
}
|
||||
|
||||
/* if we got here, all attempts failed */
|
||||
continue;
|
||||
|
||||
allocated:
|
||||
private->info[index].ref_count++;
|
||||
|
||||
#if 0
|
||||
g_print ("cmap %p: allocated (%d %d %d) %d [%d]\n", colormap,
|
||||
colors[i].red, colors[i].green, colors[i].blue, colors[i].pixel,
|
||||
private->info[index].ref_count);
|
||||
#endif
|
||||
|
||||
success[i] = TRUE;
|
||||
remaining--;
|
||||
}
|
||||
|
||||
return remaining;
|
||||
}
|
||||
|
||||
/* dirty hack for color_keying */
|
||||
static void
|
||||
gdk_directfb_allocate_color_key (GdkColormap *colormap)
|
||||
{
|
||||
GdkColormapPrivateDirectFB *private = colormap->windowing_data;
|
||||
IDirectFBPalette *palette = private->palette;
|
||||
|
||||
if (!gdk_directfb_enable_color_keying)
|
||||
return;
|
||||
|
||||
palette->SetEntries (palette, &gdk_directfb_bg_color, 1, 255);
|
||||
|
||||
colormap->colors[255].pixel = 255;
|
||||
colormap->colors[255].red = ((gdk_directfb_bg_color_key.r << 8)
|
||||
| gdk_directfb_bg_color_key.r);
|
||||
colormap->colors[255].green = ((gdk_directfb_bg_color_key.g << 8)
|
||||
| gdk_directfb_bg_color_key.g);
|
||||
colormap->colors[255].blue = ((gdk_directfb_bg_color_key.b << 8)
|
||||
| gdk_directfb_bg_color_key.b);
|
||||
|
||||
private->info[255].ref_count++;
|
||||
}
|
||||
#define __GDK_COLOR_X11_C__
|
||||
#include "gdkaliasdef.c"
|
||||
@@ -1,551 +0,0 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GTK+ Team.
|
||||
*/
|
||||
|
||||
/*
|
||||
* GTK+ DirectFB backend
|
||||
* Copyright (C) 2001-2002 convergence integrated media GmbH
|
||||
* Copyright (C) 2002 convergence GmbH
|
||||
* Written by Denis Oliver Kropp <dok@convergence.de> and
|
||||
* Sven Neumann <sven@convergence.de>
|
||||
*/
|
||||
#include "config.h"
|
||||
#include "gdk.h"
|
||||
|
||||
#include "gdkdirectfb.h"
|
||||
#include "gdkprivate-directfb.h"
|
||||
#include "gdkcursor.h"
|
||||
#include "gdkalias.h"
|
||||
|
||||
#include "x-cursors.xbm"
|
||||
|
||||
#include <directfb_version.h>
|
||||
|
||||
|
||||
static struct {
|
||||
const guchar *bits;
|
||||
int width, height, hotx, hoty;
|
||||
GdkCursor *cursor;
|
||||
} stock_cursors[] = {
|
||||
{X_cursor_bits, X_cursor_width, X_cursor_height, X_cursor_x_hot, X_cursor_y_hot},
|
||||
{X_cursor_mask_bits, X_cursor_mask_width, X_cursor_mask_height, X_cursor_mask_x_hot, X_cursor_mask_y_hot},
|
||||
{arrow_bits, arrow_width, arrow_height, arrow_x_hot, arrow_y_hot},
|
||||
{arrow_mask_bits, arrow_mask_width, arrow_mask_height, arrow_mask_x_hot, arrow_mask_y_hot},
|
||||
{based_arrow_down_bits, based_arrow_down_width, based_arrow_down_height, based_arrow_down_x_hot, based_arrow_down_y_hot},
|
||||
{based_arrow_down_mask_bits, based_arrow_down_mask_width, based_arrow_down_mask_height, based_arrow_down_mask_x_hot, based_arrow_down_mask_y_hot},
|
||||
{based_arrow_up_bits, based_arrow_up_width, based_arrow_up_height, based_arrow_up_x_hot, based_arrow_up_y_hot},
|
||||
{based_arrow_up_mask_bits, based_arrow_up_mask_width, based_arrow_up_mask_height, based_arrow_up_mask_x_hot, based_arrow_up_mask_y_hot},
|
||||
{boat_bits, boat_width, boat_height, boat_x_hot, boat_y_hot},
|
||||
{boat_mask_bits, boat_mask_width, boat_mask_height, boat_mask_x_hot, boat_mask_y_hot},
|
||||
{bogosity_bits, bogosity_width, bogosity_height, bogosity_x_hot, bogosity_y_hot},
|
||||
{bogosity_mask_bits, bogosity_mask_width, bogosity_mask_height, bogosity_mask_x_hot, bogosity_mask_y_hot},
|
||||
{bottom_left_corner_bits, bottom_left_corner_width, bottom_left_corner_height, bottom_left_corner_x_hot, bottom_left_corner_y_hot},
|
||||
{bottom_left_corner_mask_bits, bottom_left_corner_mask_width, bottom_left_corner_mask_height, bottom_left_corner_mask_x_hot, bottom_left_corner_mask_y_hot},
|
||||
{bottom_right_corner_bits, bottom_right_corner_width, bottom_right_corner_height, bottom_right_corner_x_hot, bottom_right_corner_y_hot},
|
||||
{bottom_right_corner_mask_bits, bottom_right_corner_mask_width, bottom_right_corner_mask_height, bottom_right_corner_mask_x_hot, bottom_right_corner_mask_y_hot},
|
||||
{bottom_side_bits, bottom_side_width, bottom_side_height, bottom_side_x_hot, bottom_side_y_hot},
|
||||
{bottom_side_mask_bits, bottom_side_mask_width, bottom_side_mask_height, bottom_side_mask_x_hot, bottom_side_mask_y_hot},
|
||||
{bottom_tee_bits, bottom_tee_width, bottom_tee_height, bottom_tee_x_hot, bottom_tee_y_hot},
|
||||
{bottom_tee_mask_bits, bottom_tee_mask_width, bottom_tee_mask_height, bottom_tee_mask_x_hot, bottom_tee_mask_y_hot},
|
||||
{box_spiral_bits, box_spiral_width, box_spiral_height, box_spiral_x_hot, box_spiral_y_hot},
|
||||
{box_spiral_mask_bits, box_spiral_mask_width, box_spiral_mask_height, box_spiral_mask_x_hot, box_spiral_mask_y_hot},
|
||||
{center_ptr_bits, center_ptr_width, center_ptr_height, center_ptr_x_hot, center_ptr_y_hot},
|
||||
{center_ptr_mask_bits, center_ptr_mask_width, center_ptr_mask_height, center_ptr_mask_x_hot, center_ptr_mask_y_hot},
|
||||
{circle_bits, circle_width, circle_height, circle_x_hot, circle_y_hot},
|
||||
{circle_mask_bits, circle_mask_width, circle_mask_height, circle_mask_x_hot, circle_mask_y_hot},
|
||||
{clock_bits, clock_width, clock_height, clock_x_hot, clock_y_hot},
|
||||
{clock_mask_bits, clock_mask_width, clock_mask_height, clock_mask_x_hot, clock_mask_y_hot},
|
||||
{coffee_mug_bits, coffee_mug_width, coffee_mug_height, coffee_mug_x_hot, coffee_mug_y_hot},
|
||||
{coffee_mug_mask_bits, coffee_mug_mask_width, coffee_mug_mask_height, coffee_mug_mask_x_hot, coffee_mug_mask_y_hot},
|
||||
{cross_bits, cross_width, cross_height, cross_x_hot, cross_y_hot},
|
||||
{cross_mask_bits, cross_mask_width, cross_mask_height, cross_mask_x_hot, cross_mask_y_hot},
|
||||
{cross_reverse_bits, cross_reverse_width, cross_reverse_height, cross_reverse_x_hot, cross_reverse_y_hot},
|
||||
{cross_reverse_mask_bits, cross_reverse_mask_width, cross_reverse_mask_height, cross_reverse_mask_x_hot, cross_reverse_mask_y_hot},
|
||||
{crosshair_bits, crosshair_width, crosshair_height, crosshair_x_hot, crosshair_y_hot},
|
||||
{crosshair_mask_bits, crosshair_mask_width, crosshair_mask_height, crosshair_mask_x_hot, crosshair_mask_y_hot},
|
||||
{diamond_cross_bits, diamond_cross_width, diamond_cross_height, diamond_cross_x_hot, diamond_cross_y_hot},
|
||||
{diamond_cross_mask_bits, diamond_cross_mask_width, diamond_cross_mask_height, diamond_cross_mask_x_hot, diamond_cross_mask_y_hot},
|
||||
{dot_bits, dot_width, dot_height, dot_x_hot, dot_y_hot},
|
||||
{dot_mask_bits, dot_mask_width, dot_mask_height, dot_mask_x_hot, dot_mask_y_hot},
|
||||
{dotbox_bits, dotbox_width, dotbox_height, dotbox_x_hot, dotbox_y_hot},
|
||||
{dotbox_mask_bits, dotbox_mask_width, dotbox_mask_height, dotbox_mask_x_hot, dotbox_mask_y_hot},
|
||||
{double_arrow_bits, double_arrow_width, double_arrow_height, double_arrow_x_hot, double_arrow_y_hot},
|
||||
{double_arrow_mask_bits, double_arrow_mask_width, double_arrow_mask_height, double_arrow_mask_x_hot, double_arrow_mask_y_hot},
|
||||
{draft_large_bits, draft_large_width, draft_large_height, draft_large_x_hot, draft_large_y_hot},
|
||||
{draft_large_mask_bits, draft_large_mask_width, draft_large_mask_height, draft_large_mask_x_hot, draft_large_mask_y_hot},
|
||||
{draft_small_bits, draft_small_width, draft_small_height, draft_small_x_hot, draft_small_y_hot},
|
||||
{draft_small_mask_bits, draft_small_mask_width, draft_small_mask_height, draft_small_mask_x_hot, draft_small_mask_y_hot},
|
||||
{draped_box_bits, draped_box_width, draped_box_height, draped_box_x_hot, draped_box_y_hot},
|
||||
{draped_box_mask_bits, draped_box_mask_width, draped_box_mask_height, draped_box_mask_x_hot, draped_box_mask_y_hot},
|
||||
{exchange_bits, exchange_width, exchange_height, exchange_x_hot, exchange_y_hot},
|
||||
{exchange_mask_bits, exchange_mask_width, exchange_mask_height, exchange_mask_x_hot, exchange_mask_y_hot},
|
||||
{fleur_bits, fleur_width, fleur_height, fleur_x_hot, fleur_y_hot},
|
||||
{fleur_mask_bits, fleur_mask_width, fleur_mask_height, fleur_mask_x_hot, fleur_mask_y_hot},
|
||||
{gobbler_bits, gobbler_width, gobbler_height, gobbler_x_hot, gobbler_y_hot},
|
||||
{gobbler_mask_bits, gobbler_mask_width, gobbler_mask_height, gobbler_mask_x_hot, gobbler_mask_y_hot},
|
||||
{gumby_bits, gumby_width, gumby_height, gumby_x_hot, gumby_y_hot},
|
||||
{gumby_mask_bits, gumby_mask_width, gumby_mask_height, gumby_mask_x_hot, gumby_mask_y_hot},
|
||||
{hand1_bits, hand1_width, hand1_height, hand1_x_hot, hand1_y_hot},
|
||||
{hand1_mask_bits, hand1_mask_width, hand1_mask_height, hand1_mask_x_hot, hand1_mask_y_hot},
|
||||
{hand2_bits, hand2_width, hand2_height, hand2_x_hot, hand2_y_hot},
|
||||
{hand2_mask_bits, hand2_mask_width, hand2_mask_height, hand2_mask_x_hot, hand2_mask_y_hot},
|
||||
{heart_bits, heart_width, heart_height, heart_x_hot, heart_y_hot},
|
||||
{heart_mask_bits, heart_mask_width, heart_mask_height, heart_mask_x_hot, heart_mask_y_hot},
|
||||
{icon_bits, icon_width, icon_height, icon_x_hot, icon_y_hot},
|
||||
{icon_mask_bits, icon_mask_width, icon_mask_height, icon_mask_x_hot, icon_mask_y_hot},
|
||||
{iron_cross_bits, iron_cross_width, iron_cross_height, iron_cross_x_hot, iron_cross_y_hot},
|
||||
{iron_cross_mask_bits, iron_cross_mask_width, iron_cross_mask_height, iron_cross_mask_x_hot, iron_cross_mask_y_hot},
|
||||
{left_ptr_bits, left_ptr_width, left_ptr_height, left_ptr_x_hot, left_ptr_y_hot},
|
||||
{left_ptr_mask_bits, left_ptr_mask_width, left_ptr_mask_height, left_ptr_mask_x_hot, left_ptr_mask_y_hot},
|
||||
{left_side_bits, left_side_width, left_side_height, left_side_x_hot, left_side_y_hot},
|
||||
{left_side_mask_bits, left_side_mask_width, left_side_mask_height, left_side_mask_x_hot, left_side_mask_y_hot},
|
||||
{left_tee_bits, left_tee_width, left_tee_height, left_tee_x_hot, left_tee_y_hot},
|
||||
{left_tee_mask_bits, left_tee_mask_width, left_tee_mask_height, left_tee_mask_x_hot, left_tee_mask_y_hot},
|
||||
{leftbutton_bits, leftbutton_width, leftbutton_height, leftbutton_x_hot, leftbutton_y_hot},
|
||||
{leftbutton_mask_bits, leftbutton_mask_width, leftbutton_mask_height, leftbutton_mask_x_hot, leftbutton_mask_y_hot},
|
||||
{ll_angle_bits, ll_angle_width, ll_angle_height, ll_angle_x_hot, ll_angle_y_hot},
|
||||
{ll_angle_mask_bits, ll_angle_mask_width, ll_angle_mask_height, ll_angle_mask_x_hot, ll_angle_mask_y_hot},
|
||||
{lr_angle_bits, lr_angle_width, lr_angle_height, lr_angle_x_hot, lr_angle_y_hot},
|
||||
{lr_angle_mask_bits, lr_angle_mask_width, lr_angle_mask_height, lr_angle_mask_x_hot, lr_angle_mask_y_hot},
|
||||
{man_bits, man_width, man_height, man_x_hot, man_y_hot},
|
||||
{man_mask_bits, man_mask_width, man_mask_height, man_mask_x_hot, man_mask_y_hot},
|
||||
{middlebutton_bits, middlebutton_width, middlebutton_height, middlebutton_x_hot, middlebutton_y_hot},
|
||||
{middlebutton_mask_bits, middlebutton_mask_width, middlebutton_mask_height, middlebutton_mask_x_hot, middlebutton_mask_y_hot},
|
||||
{mouse_bits, mouse_width, mouse_height, mouse_x_hot, mouse_y_hot},
|
||||
{mouse_mask_bits, mouse_mask_width, mouse_mask_height, mouse_mask_x_hot, mouse_mask_y_hot},
|
||||
{pencil_bits, pencil_width, pencil_height, pencil_x_hot, pencil_y_hot},
|
||||
{pencil_mask_bits, pencil_mask_width, pencil_mask_height, pencil_mask_x_hot, pencil_mask_y_hot},
|
||||
{pirate_bits, pirate_width, pirate_height, pirate_x_hot, pirate_y_hot},
|
||||
{pirate_mask_bits, pirate_mask_width, pirate_mask_height, pirate_mask_x_hot, pirate_mask_y_hot},
|
||||
{plus_bits, plus_width, plus_height, plus_x_hot, plus_y_hot},
|
||||
{plus_mask_bits, plus_mask_width, plus_mask_height, plus_mask_x_hot, plus_mask_y_hot},
|
||||
{question_arrow_bits, question_arrow_width, question_arrow_height, question_arrow_x_hot, question_arrow_y_hot},
|
||||
{question_arrow_mask_bits, question_arrow_mask_width, question_arrow_mask_height, question_arrow_mask_x_hot, question_arrow_mask_y_hot},
|
||||
{right_ptr_bits, right_ptr_width, right_ptr_height, right_ptr_x_hot, right_ptr_y_hot},
|
||||
{right_ptr_mask_bits, right_ptr_mask_width, right_ptr_mask_height, right_ptr_mask_x_hot, right_ptr_mask_y_hot},
|
||||
{right_side_bits, right_side_width, right_side_height, right_side_x_hot, right_side_y_hot},
|
||||
{right_side_mask_bits, right_side_mask_width, right_side_mask_height, right_side_mask_x_hot, right_side_mask_y_hot},
|
||||
{right_tee_bits, right_tee_width, right_tee_height, right_tee_x_hot, right_tee_y_hot},
|
||||
{right_tee_mask_bits, right_tee_mask_width, right_tee_mask_height, right_tee_mask_x_hot, right_tee_mask_y_hot},
|
||||
{rightbutton_bits, rightbutton_width, rightbutton_height, rightbutton_x_hot, rightbutton_y_hot},
|
||||
{rightbutton_mask_bits, rightbutton_mask_width, rightbutton_mask_height, rightbutton_mask_x_hot, rightbutton_mask_y_hot},
|
||||
{rtl_logo_bits, rtl_logo_width, rtl_logo_height, rtl_logo_x_hot, rtl_logo_y_hot},
|
||||
{rtl_logo_mask_bits, rtl_logo_mask_width, rtl_logo_mask_height, rtl_logo_mask_x_hot, rtl_logo_mask_y_hot},
|
||||
{sailboat_bits, sailboat_width, sailboat_height, sailboat_x_hot, sailboat_y_hot},
|
||||
{sailboat_mask_bits, sailboat_mask_width, sailboat_mask_height, sailboat_mask_x_hot, sailboat_mask_y_hot},
|
||||
{sb_down_arrow_bits, sb_down_arrow_width, sb_down_arrow_height, sb_down_arrow_x_hot, sb_down_arrow_y_hot},
|
||||
{sb_down_arrow_mask_bits, sb_down_arrow_mask_width, sb_down_arrow_mask_height, sb_down_arrow_mask_x_hot, sb_down_arrow_mask_y_hot},
|
||||
{sb_h_double_arrow_bits, sb_h_double_arrow_width, sb_h_double_arrow_height, sb_h_double_arrow_x_hot, sb_h_double_arrow_y_hot},
|
||||
{sb_h_double_arrow_mask_bits, sb_h_double_arrow_mask_width, sb_h_double_arrow_mask_height, sb_h_double_arrow_mask_x_hot, sb_h_double_arrow_mask_y_hot},
|
||||
{sb_left_arrow_bits, sb_left_arrow_width, sb_left_arrow_height, sb_left_arrow_x_hot, sb_left_arrow_y_hot},
|
||||
{sb_left_arrow_mask_bits, sb_left_arrow_mask_width, sb_left_arrow_mask_height, sb_left_arrow_mask_x_hot, sb_left_arrow_mask_y_hot},
|
||||
{sb_right_arrow_bits, sb_right_arrow_width, sb_right_arrow_height, sb_right_arrow_x_hot, sb_right_arrow_y_hot},
|
||||
{sb_right_arrow_mask_bits, sb_right_arrow_mask_width, sb_right_arrow_mask_height, sb_right_arrow_mask_x_hot, sb_right_arrow_mask_y_hot},
|
||||
{sb_up_arrow_bits, sb_up_arrow_width, sb_up_arrow_height, sb_up_arrow_x_hot, sb_up_arrow_y_hot},
|
||||
{sb_up_arrow_mask_bits, sb_up_arrow_mask_width, sb_up_arrow_mask_height, sb_up_arrow_mask_x_hot, sb_up_arrow_mask_y_hot},
|
||||
{sb_v_double_arrow_bits, sb_v_double_arrow_width, sb_v_double_arrow_height, sb_v_double_arrow_x_hot, sb_v_double_arrow_y_hot},
|
||||
{sb_v_double_arrow_mask_bits, sb_v_double_arrow_mask_width, sb_v_double_arrow_mask_height, sb_v_double_arrow_mask_x_hot, sb_v_double_arrow_mask_y_hot},
|
||||
{shuttle_bits, shuttle_width, shuttle_height, shuttle_x_hot, shuttle_y_hot},
|
||||
{shuttle_mask_bits, shuttle_mask_width, shuttle_mask_height, shuttle_mask_x_hot, shuttle_mask_y_hot},
|
||||
{sizing_bits, sizing_width, sizing_height, sizing_x_hot, sizing_y_hot},
|
||||
{sizing_mask_bits, sizing_mask_width, sizing_mask_height, sizing_mask_x_hot, sizing_mask_y_hot},
|
||||
{spider_bits, spider_width, spider_height, spider_x_hot, spider_y_hot},
|
||||
{spider_mask_bits, spider_mask_width, spider_mask_height, spider_mask_x_hot, spider_mask_y_hot},
|
||||
{spraycan_bits, spraycan_width, spraycan_height, spraycan_x_hot, spraycan_y_hot},
|
||||
{spraycan_mask_bits, spraycan_mask_width, spraycan_mask_height, spraycan_mask_x_hot, spraycan_mask_y_hot},
|
||||
{star_bits, star_width, star_height, star_x_hot, star_y_hot},
|
||||
{star_mask_bits, star_mask_width, star_mask_height, star_mask_x_hot, star_mask_y_hot},
|
||||
{target_bits, target_width, target_height, target_x_hot, target_y_hot},
|
||||
{target_mask_bits, target_mask_width, target_mask_height, target_mask_x_hot, target_mask_y_hot},
|
||||
{tcross_bits, tcross_width, tcross_height, tcross_x_hot, tcross_y_hot},
|
||||
{tcross_mask_bits, tcross_mask_width, tcross_mask_height, tcross_mask_x_hot, tcross_mask_y_hot},
|
||||
{top_left_arrow_bits, top_left_arrow_width, top_left_arrow_height, top_left_arrow_x_hot, top_left_arrow_y_hot},
|
||||
{top_left_arrow_mask_bits, top_left_arrow_mask_width, top_left_arrow_mask_height, top_left_arrow_mask_x_hot, top_left_arrow_mask_y_hot},
|
||||
{top_left_corner_bits, top_left_corner_width, top_left_corner_height, top_left_corner_x_hot, top_left_corner_y_hot},
|
||||
{top_left_corner_mask_bits, top_left_corner_mask_width, top_left_corner_mask_height, top_left_corner_mask_x_hot, top_left_corner_mask_y_hot},
|
||||
{top_right_corner_bits, top_right_corner_width, top_right_corner_height, top_right_corner_x_hot, top_right_corner_y_hot},
|
||||
{top_right_corner_mask_bits, top_right_corner_mask_width, top_right_corner_mask_height, top_right_corner_mask_x_hot, top_right_corner_mask_y_hot},
|
||||
{top_side_bits, top_side_width, top_side_height, top_side_x_hot, top_side_y_hot},
|
||||
{top_side_mask_bits, top_side_mask_width, top_side_mask_height, top_side_mask_x_hot, top_side_mask_y_hot},
|
||||
{top_tee_bits, top_tee_width, top_tee_height, top_tee_x_hot, top_tee_y_hot},
|
||||
{top_tee_mask_bits, top_tee_mask_width, top_tee_mask_height, top_tee_mask_x_hot, top_tee_mask_y_hot},
|
||||
{trek_bits, trek_width, trek_height, trek_x_hot, trek_y_hot},
|
||||
{trek_mask_bits, trek_mask_width, trek_mask_height, trek_mask_x_hot, trek_mask_y_hot},
|
||||
{ul_angle_bits, ul_angle_width, ul_angle_height, ul_angle_x_hot, ul_angle_y_hot},
|
||||
{ul_angle_mask_bits, ul_angle_mask_width, ul_angle_mask_height, ul_angle_mask_x_hot, ul_angle_mask_y_hot},
|
||||
{umbrella_bits, umbrella_width, umbrella_height, umbrella_x_hot, umbrella_y_hot},
|
||||
{umbrella_mask_bits, umbrella_mask_width, umbrella_mask_height, umbrella_mask_x_hot, umbrella_mask_y_hot},
|
||||
{ur_angle_bits, ur_angle_width, ur_angle_height, ur_angle_x_hot, ur_angle_y_hot},
|
||||
{ur_angle_mask_bits, ur_angle_mask_width, ur_angle_mask_height, ur_angle_mask_x_hot, ur_angle_mask_y_hot},
|
||||
{watch_bits, watch_width, watch_height, watch_x_hot, watch_y_hot},
|
||||
{watch_mask_bits, watch_mask_width, watch_mask_height, watch_mask_x_hot, watch_mask_y_hot},
|
||||
{xterm_bits, xterm_width, xterm_height, xterm_x_hot, xterm_y_hot},
|
||||
{xterm_mask_bits, xterm_mask_width, xterm_mask_height, xterm_mask_x_hot, xterm_mask_y_hot}
|
||||
};
|
||||
|
||||
GdkCursor *
|
||||
gdk_cursor_new_for_display (GdkDisplay *display,GdkCursorType cursor_type)
|
||||
{
|
||||
GdkCursor *cursor;
|
||||
GdkDisplayDFB *dfb_display = GDK_DISPLAY_DFB(display);
|
||||
|
||||
if (cursor_type >= sizeof(stock_cursors)/sizeof(stock_cursors[0]))
|
||||
return NULL;
|
||||
|
||||
cursor = stock_cursors[cursor_type].cursor;
|
||||
if (!cursor)
|
||||
{
|
||||
GdkCursorDirectFB *private;
|
||||
DFBResult ret;
|
||||
IDirectFBSurface *temp;
|
||||
IDirectFBSurface *shape;
|
||||
|
||||
int width = stock_cursors[cursor_type+1].width;
|
||||
int height = stock_cursors[cursor_type+1].height;
|
||||
|
||||
temp =gdk_display_dfb_create_surface(dfb_display,DSPF_ARGB,width,height);
|
||||
|
||||
if (!temp)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
u32 *dst;
|
||||
int pitch;
|
||||
|
||||
ret = temp->Lock (temp, DSLF_WRITE, (void**)&dst, &pitch);
|
||||
if (ret)
|
||||
{
|
||||
DirectFBError ("gdkcursor-directfb.c (gdk_cursor_new): "
|
||||
"temp->Lock", ret);
|
||||
|
||||
temp->Release (temp);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
gint x, y;
|
||||
gint mx, my;
|
||||
gint p = ((stock_cursors[cursor_type].width + 7) / 8) * 8;
|
||||
gint mp = ((stock_cursors[cursor_type+1].width + 7) / 8) * 8;
|
||||
|
||||
const guchar *src;
|
||||
const guchar *mask;
|
||||
|
||||
pitch >>= 2;
|
||||
|
||||
src = stock_cursors[cursor_type].bits;
|
||||
mask = stock_cursors[cursor_type+1].bits;
|
||||
|
||||
mx = stock_cursors[cursor_type+1].hotx - stock_cursors[cursor_type].hotx;
|
||||
my = stock_cursors[cursor_type+1].hoty - stock_cursors[cursor_type].hoty;
|
||||
|
||||
for (y = 0; y < height; y++)
|
||||
{
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
gint bit = x-mx + (y-my) * p;
|
||||
gint mbit = x + y * mp;
|
||||
|
||||
u32 color = (x-mx < 0 || y-my < 0 ||
|
||||
x-mx >= stock_cursors[cursor_type].width ||
|
||||
y-my >= stock_cursors[cursor_type].height)
|
||||
? 0x00FFFFFF : (src[bit/8] & (1 << bit%8) ? 0 : 0x00FFFFFF);
|
||||
|
||||
u8 a = color ? 0xE0 : 0xFF;
|
||||
u32 alpha = mask[mbit/8] & (1 << mbit%8) ? (a << 24) : 0;
|
||||
|
||||
dst[x + y*pitch] = alpha | color;
|
||||
}
|
||||
}
|
||||
|
||||
temp->Unlock (temp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
width += 2;
|
||||
height += 2;
|
||||
|
||||
shape=gdk_display_dfb_create_surface(dfb_display,DSPF_ARGB,width,height);
|
||||
|
||||
if( !shape ) {
|
||||
temp->Release(temp);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
shape->Clear (shape, 0x80, 0x80, 0x80, 0);
|
||||
|
||||
shape->SetBlittingFlags (shape, (DSBLIT_BLEND_COLORALPHA |
|
||||
DSBLIT_BLEND_ALPHACHANNEL));
|
||||
|
||||
shape->SetColor (shape, 0, 0, 0, 0x30);
|
||||
shape->Blit (shape, temp, NULL, 0, 0);
|
||||
shape->Blit (shape, temp, NULL, 0, 2);
|
||||
shape->Blit (shape, temp, NULL, 2, 0);
|
||||
shape->Blit (shape, temp, NULL, 2, 2);
|
||||
|
||||
shape->SetColor (shape, 0, 0, 0, 0xA0);
|
||||
shape->Blit (shape, temp, NULL, 1, 0);
|
||||
shape->Blit (shape, temp, NULL, 0, 1);
|
||||
shape->Blit (shape, temp, NULL, 2, 1);
|
||||
shape->Blit (shape, temp, NULL, 1, 2);
|
||||
|
||||
shape->SetColor (shape, 0, 0, 0, 0xE0);
|
||||
shape->Blit (shape, temp, NULL, 1, 1);
|
||||
|
||||
temp->Release (temp);
|
||||
|
||||
private = g_new0 (GdkCursorDirectFB, 1);
|
||||
cursor = (GdkCursor *) private;
|
||||
cursor->type = GDK_CURSOR_IS_PIXMAP;
|
||||
cursor->ref_count = 1;
|
||||
|
||||
private->shape = shape;
|
||||
private->hot_x = stock_cursors[cursor_type].hotx;
|
||||
private->hot_y = stock_cursors[cursor_type].hoty;
|
||||
|
||||
stock_cursors[cursor_type].cursor = cursor;
|
||||
}
|
||||
|
||||
return gdk_cursor_ref (cursor);
|
||||
}
|
||||
|
||||
GdkCursor *
|
||||
gdk_cursor_new_from_pixmap (GdkPixmap *source,
|
||||
GdkPixmap *mask,
|
||||
const GdkColor *fg,
|
||||
const GdkColor *bg,
|
||||
gint x,
|
||||
gint y)
|
||||
{
|
||||
GdkCursor *cursor;
|
||||
GdkCursorDirectFB *private;
|
||||
GdkDrawableImplDirectFB *impl;
|
||||
GdkDrawableImplDirectFB *mask_impl;
|
||||
IDirectFBSurface *shape;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_PIXMAP (source), NULL);
|
||||
g_return_val_if_fail (GDK_IS_PIXMAP (mask), NULL);
|
||||
|
||||
impl = GDK_DRAWABLE_IMPL_DIRECTFB (GDK_PIXMAP_OBJECT (source)->impl);
|
||||
mask_impl = GDK_DRAWABLE_IMPL_DIRECTFB (GDK_PIXMAP_OBJECT (mask)->impl);
|
||||
|
||||
int width = impl->width;
|
||||
int height = impl->height;
|
||||
|
||||
shape=gdk_display_dfb_create_surface(_gdk_display,DSPF_ARGB,width,height);
|
||||
|
||||
if (!shape)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* The following code assumes that pixmap and mask are A8 surfaces
|
||||
* that correspond to X11 bitmaps. This is the traditional usage of
|
||||
* gdk_cursor_new_from_pixmap(). For GTK+-DirectFB it might make
|
||||
* sense to allow arbitrary ARGB cursors.
|
||||
*/
|
||||
|
||||
shape->Clear (shape, bg->red >> 8, bg->green >> 8, bg->blue >> 8, 0xFF);
|
||||
|
||||
shape->SetColor (shape, fg->red >> 8, fg->green >> 8, fg->blue >> 8, 0xFF);
|
||||
shape->SetBlittingFlags (shape,
|
||||
DSBLIT_BLEND_ALPHACHANNEL | DSBLIT_COLORIZE);
|
||||
shape->Blit (shape, impl->surface, NULL, 0, 0);
|
||||
|
||||
shape->SetPorterDuff (shape, DSPD_DST_IN);
|
||||
shape->Blit (shape, mask_impl->surface, NULL, 0, 0);
|
||||
|
||||
shape->SetBlittingFlags (shape, DSBLIT_NOFX);
|
||||
shape->SetPorterDuff (shape, DSPD_NONE);
|
||||
|
||||
private = g_new (GdkCursorDirectFB, 1);
|
||||
cursor = (GdkCursor *) private;
|
||||
cursor->type = GDK_CURSOR_IS_PIXMAP;
|
||||
cursor->ref_count = 1;
|
||||
|
||||
private->shape = shape;
|
||||
private->hot_x = x;
|
||||
private->hot_y = y;
|
||||
|
||||
return cursor;
|
||||
}
|
||||
|
||||
GdkCursor *
|
||||
gdk_cursor_new_from_pixbuf (GdkDisplay *display,
|
||||
GdkPixbuf *pixbuf,
|
||||
gint x,
|
||||
gint y)
|
||||
{
|
||||
GdkPixmap *pixmap, *mask;
|
||||
GdkCursor *cursor;
|
||||
gint width, height, depth = 8;
|
||||
GdkVisual* visual;
|
||||
|
||||
/* FIXME: this is not the right way to set colours */
|
||||
GdkColor fg = { 0, 65535, 65535, 65535 };
|
||||
GdkColor bg = { 0, 65535, 65535, 65535 };
|
||||
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
|
||||
g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL);
|
||||
g_return_val_if_fail (0 <= x && x < gdk_pixbuf_get_width (pixbuf), NULL);
|
||||
g_return_val_if_fail (0 <= y && y < gdk_pixbuf_get_height (pixbuf), NULL);
|
||||
|
||||
width = gdk_pixbuf_get_width(pixbuf);
|
||||
height = gdk_pixbuf_get_height(pixbuf);
|
||||
|
||||
pixmap = gdk_pixmap_new ( NULL, width, height, depth);
|
||||
mask = gdk_pixmap_new ( NULL, width, height, 1);
|
||||
visual = gdk_rgb_get_visual ();
|
||||
depth = visual->depth;
|
||||
|
||||
gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &mask, 0);
|
||||
|
||||
g_return_val_if_fail (GDK_IS_PIXMAP (pixmap), NULL);
|
||||
g_return_val_if_fail (GDK_IS_PIXMAP (mask), NULL);
|
||||
|
||||
cursor = gdk_cursor_new_from_pixmap (pixmap, mask, &fg, &bg, x, y) ;
|
||||
|
||||
g_object_unref (pixmap);
|
||||
g_object_unref (mask);
|
||||
|
||||
/* a cursor of type GDK_CURSOR_IS_PIXMAP is returned */
|
||||
return cursor;
|
||||
|
||||
}
|
||||
|
||||
GdkCursor*
|
||||
gdk_cursor_new_from_name (GdkDisplay *display,
|
||||
const gchar *name)
|
||||
{
|
||||
GdkCursor *cursor;
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
|
||||
pixbuf = gdk_pixbuf_new_from_file(name, NULL);
|
||||
/* Prevents attempts to load stock X cursors from generating error messages */
|
||||
if (pixbuf == NULL)
|
||||
return NULL;
|
||||
g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL);
|
||||
cursor = gdk_cursor_new_from_pixbuf (display, pixbuf, 1, 1);
|
||||
g_object_unref (pixbuf);
|
||||
|
||||
return cursor;
|
||||
}
|
||||
|
||||
|
||||
GdkPixbuf*
|
||||
gdk_cursor_get_image (GdkCursor *cursor)
|
||||
{
|
||||
g_return_val_if_fail (cursor != NULL, NULL);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
_gdk_cursor_destroy (GdkCursor *cursor)
|
||||
{
|
||||
GdkCursorDirectFB *private;
|
||||
|
||||
g_return_if_fail (cursor != NULL);
|
||||
g_return_if_fail (cursor->ref_count == 0);
|
||||
|
||||
private = (GdkCursorDirectFB *) cursor;
|
||||
|
||||
private->shape->Release (private->shape);
|
||||
|
||||
g_free (private);
|
||||
}
|
||||
|
||||
GdkDisplay *
|
||||
gdk_cursor_get_display (GdkCursor *cursor)
|
||||
{
|
||||
return gdk_display_get_default ();
|
||||
}
|
||||
|
||||
guint
|
||||
gdk_display_get_default_cursor_size (GdkDisplay *display)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), 0);
|
||||
|
||||
return 16;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_display_get_maximal_cursor_size:
|
||||
* @display: a #GdkDisplay
|
||||
* @width: the return location for the maximal cursor width
|
||||
* @height: the return location for the maximal cursor height
|
||||
*
|
||||
* Gets the maximal size to use for cursors on @display.
|
||||
*
|
||||
* Since: 2.4
|
||||
*/
|
||||
void
|
||||
gdk_display_get_maximal_cursor_size (GdkDisplay *display,
|
||||
guint *width,
|
||||
guint *height)
|
||||
{
|
||||
g_return_if_fail (GDK_IS_DISPLAY (display));
|
||||
|
||||
/* Cursor sizes in DirectFB can be large (4095x4095), but we limit this to
|
||||
128x128 for max compatibility with the x11 backend. */
|
||||
*width = 128;
|
||||
*height = 128;
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_display_supports_cursor_alpha:
|
||||
* @display: a #GdkDisplay
|
||||
*
|
||||
* Returns %TRUE if cursors can use an 8bit alpha channel
|
||||
* on @display. Otherwise, cursors are restricted to bilevel
|
||||
* alpha (i.e. a mask).
|
||||
*
|
||||
* Returns: whether cursors can have alpha channels.
|
||||
*
|
||||
* Since: 2.4
|
||||
*/
|
||||
gboolean
|
||||
gdk_display_supports_cursor_alpha (GdkDisplay *display)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gdk_display_supports_cursor_color (GdkDisplay *display)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define __GDK_CURSOR_X11_C__
|
||||
#include "gdkaliasdef.c"
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GTK+ Team.
|
||||
*/
|
||||
|
||||
/*
|
||||
* GTK+ DirectFB backend
|
||||
* Copyright (C) 2001-2002 convergence integrated media GmbH
|
||||
* Copyright (C) 2002 convergence GmbH
|
||||
* Written by Denis Oliver Kropp <dok@convergence.de> and
|
||||
* Sven Neumann <sven@convergence.de>
|
||||
*/
|
||||
|
||||
#ifndef __GDK_DIRECTFB_H__
|
||||
#define __GDK_DIRECTFB_H__
|
||||
|
||||
/* This define disables some experimental code
|
||||
*/
|
||||
#define GDK_DIRECTFB_NO_EXPERIMENTS
|
||||
|
||||
#include <cairo.h>
|
||||
#include <directfb.h>
|
||||
#include "gdk/gdkprivate.h"
|
||||
|
||||
|
||||
extern GdkWindow * _gdk_parent_root;
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GDK_ROOT_WINDOW() _gdk_parent_root
|
||||
|
||||
#define GDK_WINDOW_DFB_ID(win) (GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (win)->impl)->dfb_id)
|
||||
|
||||
|
||||
/* used for the --transparent-unfocused hack */
|
||||
extern gboolean gdk_directfb_apply_focus_opacity;
|
||||
|
||||
/* used for the --enable-color-keying hack */
|
||||
extern gboolean gdk_directfb_enable_color_keying;
|
||||
extern DFBColor gdk_directfb_bg_color;
|
||||
extern DFBColor gdk_directfb_bg_color_key;
|
||||
|
||||
/* to disable antialiasing */
|
||||
extern gboolean gdk_directfb_monochrome_fonts;
|
||||
|
||||
|
||||
/* GTK+-DirectFB specific functions */
|
||||
|
||||
void gdk_directfb_window_set_opacity (GdkWindow *window,
|
||||
guchar opacity);
|
||||
|
||||
GdkVisual * gdk_directfb_visual_by_format (DFBSurfacePixelFormat pixel_format);
|
||||
|
||||
IDirectFBWindow *gdk_directfb_window_lookup(GdkWindow *window);
|
||||
IDirectFBSurface *gdk_directfb_surface_lookup(GdkWindow *window);
|
||||
|
||||
GdkWindow *gdk_directfb_create_child_window(GdkWindow *parent,
|
||||
IDirectFBSurface *subsurface);
|
||||
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_DIRECTFB_H__ */
|
||||
@@ -1,547 +0,0 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GTK+ Team. See the ChangeLog
|
||||
* files for a list of changes. These files are distributed with
|
||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include "gdk.h"
|
||||
#include "gdkdirectfb.h"
|
||||
#include "gdkprivate-directfb.h"
|
||||
#include "gdkscreen.h"
|
||||
#include "gdkdisplaymanager.h"
|
||||
#include "gdkalias.h"
|
||||
|
||||
|
||||
extern void _gdk_visual_init (void);
|
||||
extern void _gdk_events_init (void);
|
||||
extern void _gdk_input_init (void);
|
||||
extern void _gdk_dnd_init (void);
|
||||
extern void _gdk_windowing_window_init (void);
|
||||
extern void _gdk_windowing_image_init (void);
|
||||
extern void _gdk_directfb_keyboard_init (void);
|
||||
|
||||
static gboolean gdk_directfb_argb_font = FALSE;
|
||||
static gint gdk_directfb_glyph_surface_cache = 8;
|
||||
|
||||
|
||||
const GOptionEntry _gdk_windowing_args[] =
|
||||
{
|
||||
{ "disable-aa-fonts",0,0,G_OPTION_ARG_INT,&gdk_directfb_monochrome_fonts,NULL,NULL },
|
||||
{ "argb-font",0,0, G_OPTION_ARG_INT, &gdk_directfb_argb_font,NULL,NULL},
|
||||
{ "transparent-unfocused",0,0, G_OPTION_ARG_INT, &gdk_directfb_apply_focus_opacity,NULL,NULL },
|
||||
{ "glyph-surface-cache",0,0,G_OPTION_ARG_INT,&gdk_directfb_glyph_surface_cache,NULL,NULL },
|
||||
{ "enable-color-keying",0,0,G_OPTION_ARG_INT,&gdk_directfb_enable_color_keying,NULL,NULL },
|
||||
{ NULL}
|
||||
};
|
||||
|
||||
/* Main entry point for gdk in 2.6 args are parsed
|
||||
*/
|
||||
GdkDisplay * gdk_display_open (const gchar *display_name)
|
||||
{
|
||||
IDirectFB *directfb;
|
||||
IDirectFBDisplayLayer *layer;
|
||||
IDirectFBInputDevice *keyboard;
|
||||
DFBResult ret;
|
||||
|
||||
if (_gdk_display)
|
||||
{
|
||||
return GDK_DISPLAY_OBJECT(_gdk_display); /* single display only */
|
||||
}
|
||||
|
||||
ret = DirectFBInit (NULL, NULL);
|
||||
if (ret != DFB_OK)
|
||||
{
|
||||
DirectFBError ("gdk_display_open: DirectFBInit", ret);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret = DirectFBCreate (&directfb);
|
||||
if (ret != DFB_OK)
|
||||
{
|
||||
DirectFBError ("gdk_display_open: DirectFBCreate", ret);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
_gdk_display = g_object_new (GDK_TYPE_DISPLAY_DFB, NULL);
|
||||
_gdk_display->directfb = directfb;
|
||||
|
||||
ret = directfb->GetDisplayLayer (directfb, DLID_PRIMARY, &layer);
|
||||
if (ret != DFB_OK)
|
||||
{
|
||||
DirectFBError ("gdk_display_open: GetDisplayLayer", ret);
|
||||
directfb->Release (directfb);
|
||||
_gdk_display->directfb = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
ret = directfb->GetInputDevice (directfb, DIDID_KEYBOARD, &keyboard);
|
||||
if (ret != DFB_OK)
|
||||
{
|
||||
DirectFBError ("gdk_display_open: GetInputDevice", ret);
|
||||
directfb->Release (directfb);
|
||||
_gdk_display->directfb = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
_gdk_display->layer=layer;
|
||||
_gdk_display->keyboard=keyboard;
|
||||
|
||||
_gdk_directfb_keyboard_init ();
|
||||
|
||||
_gdk_screen = g_object_new (GDK_TYPE_SCREEN, NULL);
|
||||
|
||||
_gdk_visual_init ();
|
||||
_gdk_windowing_window_init ();
|
||||
|
||||
gdk_screen_set_default_colormap (_gdk_screen,
|
||||
gdk_screen_get_system_colormap (_gdk_screen)); _gdk_windowing_image_init ();
|
||||
|
||||
_gdk_events_init ();
|
||||
_gdk_input_init ();
|
||||
_gdk_dnd_init ();
|
||||
|
||||
layer->EnableCursor (layer, 1);
|
||||
|
||||
g_signal_emit_by_name (gdk_display_manager_get (),
|
||||
"display_opened", _gdk_display);
|
||||
|
||||
return GDK_DISPLAY_OBJECT(_gdk_display);
|
||||
}
|
||||
|
||||
GType
|
||||
gdk_display_dfb_get_type (void)
|
||||
{
|
||||
static GType object_type = 0;
|
||||
|
||||
if (!object_type)
|
||||
{
|
||||
const GTypeInfo object_info =
|
||||
{
|
||||
sizeof (GdkDisplayDFBClass),
|
||||
(GBaseInitFunc) NULL,
|
||||
(GBaseFinalizeFunc) NULL,
|
||||
(GClassInitFunc) NULL,
|
||||
NULL, /* class_finalize */
|
||||
NULL, /* class_data */
|
||||
sizeof (GdkDisplayDFB),
|
||||
0, /* n_preallocs */
|
||||
(GInstanceInitFunc) NULL,
|
||||
};
|
||||
|
||||
object_type = g_type_register_static (GDK_TYPE_DISPLAY,
|
||||
"GdkDisplayDFB",
|
||||
&object_info, 0);
|
||||
}
|
||||
|
||||
return object_type;
|
||||
}
|
||||
|
||||
IDirectFBSurface * gdk_display_dfb_create_surface (GdkDisplayDFB *display,int format,int width, int height) {
|
||||
DFBResult ret;
|
||||
IDirectFBSurface *temp;
|
||||
DFBSurfaceDescription dsc;
|
||||
dsc.flags = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT;
|
||||
dsc.width = width;
|
||||
dsc.height = height;
|
||||
dsc.pixelformat = format;
|
||||
ret = display->directfb->CreateSurface (display->directfb, &dsc, &temp);
|
||||
if (ret)
|
||||
{
|
||||
DirectFBError ("gdk_display_dfb_create_surface ", ret);
|
||||
return NULL;
|
||||
}
|
||||
return temp;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************************************
|
||||
* Displays and Screens
|
||||
*/
|
||||
|
||||
void
|
||||
_gdk_windowing_set_default_display (GdkDisplay *display)
|
||||
{
|
||||
_gdk_display=GDK_DISPLAY_DFB(display);
|
||||
}
|
||||
|
||||
G_CONST_RETURN gchar *
|
||||
gdk_display_get_name (GdkDisplay *display)
|
||||
{
|
||||
return gdk_get_display_arg_name ();
|
||||
}
|
||||
|
||||
int
|
||||
gdk_display_get_n_screens (GdkDisplay *display)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
GdkScreen *
|
||||
gdk_display_get_screen (GdkDisplay *display,
|
||||
gint screen_num)
|
||||
{
|
||||
return _gdk_screen;
|
||||
}
|
||||
|
||||
GdkScreen *
|
||||
gdk_display_get_default_screen (GdkDisplay *display)
|
||||
{
|
||||
return _gdk_screen;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gdk_display_supports_shapes (GdkDisplay *display)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gdk_display_supports_input_shapes (GdkDisplay *display)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
GdkWindow *gdk_display_get_default_group (GdkDisplay *display)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
|
||||
return _gdk_parent_root;
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************************************
|
||||
* Selection and Clipboard
|
||||
*/
|
||||
|
||||
gboolean
|
||||
gdk_display_supports_selection_notification (GdkDisplay *display)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean gdk_display_request_selection_notification (GdkDisplay *display,
|
||||
GdkAtom selection)
|
||||
|
||||
{
|
||||
|
||||
g_warning("gdk_display_request_selection_notification Unimplemented function \n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gdk_display_supports_clipboard_persistence (GdkDisplay *display)
|
||||
{
|
||||
g_warning("gdk_display_supports_clipboard_persistence Unimplemented function \n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_display_store_clipboard (GdkDisplay *display,
|
||||
GdkWindow *clipboard_window,
|
||||
guint32 time_,
|
||||
const GdkAtom *targets,
|
||||
gint n_targets)
|
||||
{
|
||||
|
||||
g_warning("gdk_display_store_clipboard Unimplemented function \n");
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************************************
|
||||
* Pointer
|
||||
*/
|
||||
|
||||
static gboolean _gdk_directfb_pointer_implicit_grab = FALSE;
|
||||
|
||||
GdkGrabStatus
|
||||
gdk_directfb_pointer_grab (GdkWindow *window,
|
||||
gint owner_events,
|
||||
GdkEventMask event_mask,
|
||||
GdkWindow *confine_to,
|
||||
GdkCursor *cursor,
|
||||
guint32 time,
|
||||
gboolean implicit_grab)
|
||||
{
|
||||
GdkWindow *toplevel;
|
||||
GdkWindowImplDirectFB *impl;
|
||||
if (_gdk_directfb_pointer_grab_window)
|
||||
{
|
||||
if (implicit_grab && !_gdk_directfb_pointer_implicit_grab)
|
||||
return GDK_GRAB_ALREADY_GRABBED;
|
||||
|
||||
gdk_pointer_ungrab (time);
|
||||
}
|
||||
|
||||
toplevel = gdk_directfb_window_find_toplevel (window);
|
||||
impl = GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (toplevel)->impl);
|
||||
|
||||
if (impl->window)
|
||||
{
|
||||
if (impl->window->GrabPointer (impl->window) == DFB_LOCKED)
|
||||
return GDK_GRAB_ALREADY_GRABBED;
|
||||
}
|
||||
|
||||
if (event_mask & GDK_BUTTON_MOTION_MASK)
|
||||
event_mask |= (GDK_BUTTON1_MOTION_MASK |
|
||||
GDK_BUTTON2_MOTION_MASK |
|
||||
GDK_BUTTON3_MOTION_MASK);
|
||||
|
||||
_gdk_directfb_pointer_implicit_grab = implicit_grab;
|
||||
_gdk_directfb_pointer_grab_window = g_object_ref (window);
|
||||
_gdk_directfb_pointer_grab_owner_events = owner_events;
|
||||
|
||||
_gdk_directfb_pointer_grab_confine = (confine_to ?
|
||||
g_object_ref (confine_to) : NULL);
|
||||
_gdk_directfb_pointer_grab_events = event_mask;
|
||||
_gdk_directfb_pointer_grab_cursor = (cursor ?
|
||||
gdk_cursor_ref (cursor) : NULL);
|
||||
|
||||
|
||||
gdk_directfb_window_send_crossing_events (NULL,
|
||||
window,
|
||||
GDK_CROSSING_GRAB);
|
||||
|
||||
return GDK_GRAB_SUCCESS;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_directfb_pointer_ungrab (guint32 time,
|
||||
gboolean implicit_grab)
|
||||
{
|
||||
GdkWindow *toplevel;
|
||||
GdkWindow *mousewin;
|
||||
GdkWindow *old_grab_window;
|
||||
GdkWindowImplDirectFB *impl;
|
||||
|
||||
if (implicit_grab && !_gdk_directfb_pointer_implicit_grab)
|
||||
return;
|
||||
|
||||
if (!_gdk_directfb_pointer_grab_window)
|
||||
return;
|
||||
|
||||
toplevel =
|
||||
gdk_directfb_window_find_toplevel (_gdk_directfb_pointer_grab_window);
|
||||
impl = GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (toplevel)->impl);
|
||||
|
||||
if (impl->window)
|
||||
impl->window->UngrabPointer (impl->window);
|
||||
|
||||
if (_gdk_directfb_pointer_grab_confine)
|
||||
{
|
||||
g_object_unref (_gdk_directfb_pointer_grab_confine);
|
||||
_gdk_directfb_pointer_grab_confine = NULL;
|
||||
}
|
||||
|
||||
if (_gdk_directfb_pointer_grab_cursor)
|
||||
{
|
||||
gdk_cursor_unref (_gdk_directfb_pointer_grab_cursor);
|
||||
_gdk_directfb_pointer_grab_cursor = NULL;
|
||||
}
|
||||
|
||||
old_grab_window = _gdk_directfb_pointer_grab_window;
|
||||
|
||||
_gdk_directfb_pointer_grab_window = NULL;
|
||||
_gdk_directfb_pointer_implicit_grab = FALSE;
|
||||
|
||||
mousewin = gdk_window_at_pointer (NULL, NULL);
|
||||
gdk_directfb_window_send_crossing_events (old_grab_window,
|
||||
mousewin,
|
||||
GDK_CROSSING_UNGRAB);
|
||||
g_object_unref (old_grab_window);
|
||||
}
|
||||
|
||||
void
|
||||
gdk_display_pointer_ungrab (GdkDisplay *display,
|
||||
guint32 time)
|
||||
{
|
||||
GdkPointerGrabInfo *grab = _gdk_display_get_last_pointer_grab (display);
|
||||
|
||||
if (grab)
|
||||
{
|
||||
grab->serial_end = 0;
|
||||
}
|
||||
|
||||
_gdk_display_pointer_grab_update (display, 0);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************************************
|
||||
* Keyboard
|
||||
*/
|
||||
|
||||
GdkGrabStatus
|
||||
gdk_directfb_keyboard_grab (GdkDisplay *display,
|
||||
GdkWindow *window,
|
||||
gint owner_events,
|
||||
guint32 time)
|
||||
{
|
||||
GdkWindow *toplevel;
|
||||
GdkWindowImplDirectFB *impl;
|
||||
|
||||
g_return_val_if_fail (GDK_IS_WINDOW (window), 0);
|
||||
|
||||
if (_gdk_directfb_keyboard_grab_window)
|
||||
gdk_keyboard_ungrab (time);
|
||||
|
||||
toplevel = gdk_directfb_window_find_toplevel (window);
|
||||
impl = GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (toplevel)->impl);
|
||||
|
||||
if (impl->window)
|
||||
{
|
||||
if (impl->window->GrabKeyboard (impl->window) == DFB_LOCKED)
|
||||
return GDK_GRAB_ALREADY_GRABBED;
|
||||
}
|
||||
|
||||
_gdk_directfb_keyboard_grab_window = g_object_ref (window);
|
||||
_gdk_directfb_keyboard_grab_owner_events = owner_events;
|
||||
return GDK_GRAB_SUCCESS;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_directfb_keyboard_ungrab (GdkDisplay *display,
|
||||
guint32 time)
|
||||
{
|
||||
GdkWindow *toplevel;
|
||||
GdkWindowImplDirectFB *impl;
|
||||
|
||||
if (!_gdk_directfb_keyboard_grab_window)
|
||||
return;
|
||||
|
||||
toplevel = gdk_directfb_window_find_toplevel (_gdk_directfb_keyboard_grab_window);
|
||||
impl = GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (toplevel)->impl);
|
||||
|
||||
if (impl->window)
|
||||
impl->window->UngrabKeyboard (impl->window);
|
||||
|
||||
g_object_unref (_gdk_directfb_keyboard_grab_window);
|
||||
_gdk_directfb_keyboard_grab_window = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------
|
||||
* gdk_keyboard_grab
|
||||
*
|
||||
* Grabs the keyboard to a specific window
|
||||
*
|
||||
* Arguments:
|
||||
* "window" is the window which will receive the grab
|
||||
* "owner_events" specifies whether events will be reported as is,
|
||||
* or relative to "window"
|
||||
* "time" specifies the time
|
||||
*
|
||||
* Results:
|
||||
*
|
||||
* Side effects:
|
||||
* requires a corresponding call to gdk_keyboard_ungrab
|
||||
*
|
||||
*--------------------------------------------------------------
|
||||
*/
|
||||
|
||||
GdkGrabStatus
|
||||
gdk_display_keyboard_grab (GdkDisplay *display,
|
||||
GdkWindow *window,
|
||||
gint owner_events,
|
||||
guint32 time)
|
||||
{
|
||||
return gdk_directfb_keyboard_grab (display, window, owner_events, time);
|
||||
}
|
||||
|
||||
void
|
||||
gdk_display_keyboard_ungrab (GdkDisplay *display,
|
||||
guint32 time)
|
||||
{
|
||||
return gdk_directfb_keyboard_ungrab (display, time);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************************************
|
||||
* Misc Stuff
|
||||
*/
|
||||
|
||||
void
|
||||
gdk_display_beep (GdkDisplay *display)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
gdk_display_sync (GdkDisplay *display)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
gdk_display_flush (GdkDisplay *display)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************************************************************************
|
||||
* Notifications
|
||||
*/
|
||||
|
||||
void
|
||||
gdk_notify_startup_complete (void)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_notify_startup_complete_with_id:
|
||||
* @startup_id: a startup-notification identifier, for which notification
|
||||
* process should be completed
|
||||
*
|
||||
* Indicates to the GUI environment that the application has finished
|
||||
* loading, using a given identifier.
|
||||
*
|
||||
* GTK+ will call this function automatically for #GtkWindow with custom
|
||||
* startup-notification identifier unless
|
||||
* gtk_window_set_auto_startup_notification() is called to disable
|
||||
* that feature.
|
||||
*
|
||||
* Since: 2.12
|
||||
**/
|
||||
void
|
||||
gdk_notify_startup_complete_with_id (const gchar* startup_id)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************************************
|
||||
* Compositing
|
||||
*/
|
||||
|
||||
gboolean
|
||||
gdk_display_supports_composite (GdkDisplay *display)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
#define __GDK_DISPLAY_X11_C__
|
||||
#include "gdkaliasdef.c"
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef GDK_DISPLAY_DFB_H
|
||||
#define GDK_DISPLAY_DFB_H
|
||||
|
||||
#include <directfb.h>
|
||||
#include <gdk/gdkdisplay.h>
|
||||
#include <gdk/gdkkeys.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
typedef struct _GdkDisplayDFB GdkDisplayDFB;
|
||||
typedef struct _GdkDisplayDFBClass GdkDisplayDFBClass;
|
||||
|
||||
|
||||
#define GDK_TYPE_DISPLAY_DFB (gdk_display_dfb_get_type())
|
||||
#define GDK_DISPLAY_DFB(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DISPLAY_DFB, GdkDisplayDFB))
|
||||
#define GDK_DISPLAY_DFB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY_DFB, GdkDisplayDFBClass))
|
||||
#define GDK_IS_DISPLAY_DFB(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DISPLAY_DFB))
|
||||
#define GDK_IS_DISPLAY_DFB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY_DFB))
|
||||
#define GDK_DISPLAY_DFB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY_DFB, GdkDisplayDFBClass))
|
||||
|
||||
struct _GdkDisplayDFB
|
||||
{
|
||||
GdkDisplay parent;
|
||||
IDirectFB *directfb;
|
||||
IDirectFBDisplayLayer *layer;
|
||||
IDirectFBEventBuffer *buffer;
|
||||
IDirectFBInputDevice *keyboard;
|
||||
GdkKeymap *keymap;
|
||||
};
|
||||
|
||||
struct _GdkDisplayDFBClass
|
||||
{
|
||||
GdkDisplayClass parent;
|
||||
};
|
||||
|
||||
GType gdk_display_dfb_get_type (void);
|
||||
|
||||
IDirectFBSurface * gdk_display_dfb_create_surface (GdkDisplayDFB *display,int format,int width, int height);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* GDK_DISPLAY_DFB_H */
|
||||
@@ -1,638 +0,0 @@
|
||||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 1995-1999 Peter Mattis, Spencer Kimball and Josh MacDonald
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GTK+ Team.
|
||||
*/
|
||||
|
||||
/*
|
||||
* GTK+ DirectFB backend
|
||||
* Copyright (C) 2001-2002 convergence integrated media GmbH
|
||||
* Copyright (C) 2002-2004 convergence GmbH
|
||||
* Written by Denis Oliver Kropp <dok@convergence.de> and
|
||||
* Sven Neumann <sven@convergence.de>
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "gdk.h"
|
||||
#include "gdkdirectfb.h"
|
||||
#include "gdkprivate-directfb.h"
|
||||
|
||||
#include "gdkdnd.h"
|
||||
#include "gdkproperty.h"
|
||||
#include "gdkalias.h"
|
||||
|
||||
typedef struct _GdkDragContextPrivate GdkDragContextPrivate;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GDK_DRAG_STATUS_DRAG,
|
||||
GDK_DRAG_STATUS_MOTION_WAIT,
|
||||
GDK_DRAG_STATUS_ACTION_WAIT,
|
||||
GDK_DRAG_STATUS_DROP
|
||||
} GtkDragStatus;
|
||||
|
||||
/* Structure that holds information about a drag in progress.
|
||||
* this is used on both source and destination sides.
|
||||
*/
|
||||
struct _GdkDragContextPrivate
|
||||
{
|
||||
GdkAtom local_selection;
|
||||
|
||||
guint16 last_x; /* Coordinates from last event */
|
||||
guint16 last_y;
|
||||
guint drag_status : 4; /* current status of drag */
|
||||
};
|
||||
|
||||
/* Drag Contexts */
|
||||
|
||||
static GList *contexts = NULL;
|
||||
static GdkDragContext *current_dest_drag = NULL;
|
||||
|
||||
|
||||
#define GDK_DRAG_CONTEXT_PRIVATE_DATA(ctx) ((GdkDragContextPrivate *) GDK_DRAG_CONTEXT (ctx)->windowing_data)
|
||||
|
||||
static void gdk_drag_context_finalize (GObject *object);
|
||||
|
||||
G_DEFINE_TYPE (GdkDragContext, gdk_drag_context, G_TYPE_OBJECT)
|
||||
|
||||
static void
|
||||
gdk_drag_context_init (GdkDragContext *dragcontext)
|
||||
{
|
||||
GdkDragContextPrivate *private;
|
||||
|
||||
private = G_TYPE_INSTANCE_GET_PRIVATE (dragcontext,
|
||||
GDK_TYPE_DRAG_CONTEXT,
|
||||
GdkDragContextPrivate);
|
||||
|
||||
dragcontext->windowing_data = private;
|
||||
|
||||
contexts = g_list_prepend (contexts, dragcontext);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_drag_context_class_init (GdkDragContextClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = gdk_drag_context_finalize;
|
||||
|
||||
g_type_class_add_private (object_class, sizeof (GdkDragContextPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_drag_context_finalize (GObject *object)
|
||||
{
|
||||
GdkDragContext *context = GDK_DRAG_CONTEXT (object);
|
||||
|
||||
g_list_free (context->targets);
|
||||
|
||||
if (context->source_window)
|
||||
g_object_unref (context->source_window);
|
||||
|
||||
if (context->dest_window)
|
||||
g_object_unref (context->dest_window);
|
||||
|
||||
contexts = g_list_remove (contexts, context);
|
||||
|
||||
G_OBJECT_CLASS (gdk_drag_context_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
GdkDragContext *
|
||||
gdk_drag_context_new (void)
|
||||
{
|
||||
return g_object_new (gdk_drag_context_get_type (), NULL);
|
||||
}
|
||||
|
||||
static GdkDragContext *
|
||||
gdk_drag_context_find (gboolean is_source,
|
||||
GdkWindow *source,
|
||||
GdkWindow *dest)
|
||||
{
|
||||
GdkDragContext *context;
|
||||
GdkDragContextPrivate *private;
|
||||
GList *list;
|
||||
|
||||
for (list = contexts; list; list = list->next)
|
||||
{
|
||||
context = (GdkDragContext *) list->data;
|
||||
private = GDK_DRAG_CONTEXT_PRIVATE_DATA (context);
|
||||
|
||||
if ((!context->is_source == !is_source) &&
|
||||
((source == NULL) ||
|
||||
(context->source_window && (context->source_window == source))) &&
|
||||
((dest == NULL) ||
|
||||
(context->dest_window && (context->dest_window == dest))))
|
||||
return context;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/************************** Public API ***********************/
|
||||
|
||||
void
|
||||
_gdk_dnd_init (void)
|
||||
{
|
||||
}
|
||||
|
||||
/* Source side */
|
||||
|
||||
static void
|
||||
local_send_leave (GdkDragContext *context,
|
||||
guint32 time)
|
||||
{
|
||||
GdkEvent event;
|
||||
|
||||
if ((current_dest_drag != NULL) &&
|
||||
(current_dest_drag->protocol == GDK_DRAG_PROTO_LOCAL) &&
|
||||
(current_dest_drag->source_window == context->source_window))
|
||||
{
|
||||
event.dnd.type = GDK_DRAG_LEAVE;
|
||||
event.dnd.window = context->dest_window;
|
||||
/* Pass ownership of context to the event */
|
||||
event.dnd.context = current_dest_drag;
|
||||
event.dnd.send_event = FALSE;
|
||||
event.dnd.time = time;
|
||||
|
||||
current_dest_drag = NULL;
|
||||
|
||||
gdk_event_put (&event);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
local_send_enter (GdkDragContext *context,
|
||||
guint32 time)
|
||||
{
|
||||
GdkDragContextPrivate *private;
|
||||
GdkDragContext *new_context;
|
||||
GdkEvent event;
|
||||
|
||||
private = GDK_DRAG_CONTEXT_PRIVATE_DATA (context);
|
||||
|
||||
if (!private->local_selection)
|
||||
private->local_selection = gdk_atom_intern ("LocalDndSelection", FALSE);
|
||||
|
||||
if (current_dest_drag != NULL)
|
||||
{
|
||||
g_object_unref (current_dest_drag);
|
||||
current_dest_drag = NULL;
|
||||
}
|
||||
|
||||
new_context = gdk_drag_context_new ();
|
||||
new_context->protocol = GDK_DRAG_PROTO_LOCAL;
|
||||
new_context->is_source = FALSE;
|
||||
|
||||
new_context->source_window = g_object_ref (context->source_window);
|
||||
|
||||
new_context->dest_window = g_object_ref (context->dest_window);
|
||||
|
||||
new_context->targets = g_list_copy (context->targets);
|
||||
|
||||
gdk_window_set_events (new_context->source_window,
|
||||
gdk_window_get_events (new_context->source_window) |
|
||||
GDK_PROPERTY_CHANGE_MASK);
|
||||
new_context->actions = context->actions;
|
||||
|
||||
event.dnd.type = GDK_DRAG_ENTER;
|
||||
event.dnd.window = context->dest_window;
|
||||
event.dnd.send_event = FALSE;
|
||||
event.dnd.context = new_context;
|
||||
event.dnd.time = time;
|
||||
|
||||
current_dest_drag = new_context;
|
||||
|
||||
(GDK_DRAG_CONTEXT_PRIVATE_DATA (new_context))->local_selection =
|
||||
private->local_selection;
|
||||
|
||||
gdk_event_put (&event);
|
||||
}
|
||||
|
||||
static void
|
||||
local_send_motion (GdkDragContext *context,
|
||||
gint x_root,
|
||||
gint y_root,
|
||||
GdkDragAction action,
|
||||
guint32 time)
|
||||
{
|
||||
GdkEvent event;
|
||||
|
||||
if ((current_dest_drag != NULL) &&
|
||||
(current_dest_drag->protocol == GDK_DRAG_PROTO_LOCAL) &&
|
||||
(current_dest_drag->source_window == context->source_window))
|
||||
{
|
||||
event.dnd.type = GDK_DRAG_MOTION;
|
||||
event.dnd.window = current_dest_drag->dest_window;
|
||||
event.dnd.send_event = FALSE;
|
||||
event.dnd.context = current_dest_drag;
|
||||
event.dnd.time = time;
|
||||
event.dnd.x_root = x_root;
|
||||
event.dnd.y_root = y_root;
|
||||
|
||||
current_dest_drag->suggested_action = action;
|
||||
current_dest_drag->actions = action;
|
||||
|
||||
(GDK_DRAG_CONTEXT_PRIVATE_DATA (current_dest_drag))->last_x = x_root;
|
||||
(GDK_DRAG_CONTEXT_PRIVATE_DATA (current_dest_drag))->last_y = y_root;
|
||||
|
||||
GDK_DRAG_CONTEXT_PRIVATE_DATA (context)->drag_status = GDK_DRAG_STATUS_MOTION_WAIT;
|
||||
|
||||
gdk_event_put (&event);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
local_send_drop (GdkDragContext *context,
|
||||
guint32 time)
|
||||
{
|
||||
GdkEvent event;
|
||||
|
||||
if ((current_dest_drag != NULL) &&
|
||||
(current_dest_drag->protocol == GDK_DRAG_PROTO_LOCAL) &&
|
||||
(current_dest_drag->source_window == context->source_window))
|
||||
{
|
||||
GdkDragContextPrivate *private;
|
||||
private = GDK_DRAG_CONTEXT_PRIVATE_DATA (current_dest_drag);
|
||||
|
||||
event.dnd.type = GDK_DROP_START;
|
||||
event.dnd.window = current_dest_drag->dest_window;
|
||||
event.dnd.send_event = FALSE;
|
||||
event.dnd.context = current_dest_drag;
|
||||
event.dnd.time = time;
|
||||
event.dnd.x_root = private->last_x;
|
||||
event.dnd.y_root = private->last_y;
|
||||
|
||||
gdk_event_put (&event);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_drag_do_leave (GdkDragContext *context,
|
||||
guint32 time)
|
||||
{
|
||||
if (context->dest_window)
|
||||
{
|
||||
switch (context->protocol)
|
||||
{
|
||||
case GDK_DRAG_PROTO_LOCAL:
|
||||
local_send_leave (context, time);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
g_object_unref (context->dest_window);
|
||||
context->dest_window = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
GdkDragContext *
|
||||
gdk_drag_begin (GdkWindow *window,
|
||||
GList *targets)
|
||||
{
|
||||
GList *list;
|
||||
GdkDragContext *new_context;
|
||||
|
||||
g_return_val_if_fail (window != NULL, NULL);
|
||||
|
||||
g_object_ref (window);
|
||||
|
||||
new_context = gdk_drag_context_new ();
|
||||
new_context->is_source = TRUE;
|
||||
new_context->source_window = window;
|
||||
new_context->targets = NULL;
|
||||
new_context->actions = 0;
|
||||
|
||||
for (list = targets; list; list = list->next)
|
||||
new_context->targets = g_list_append (new_context->targets, list->data);
|
||||
|
||||
return new_context;
|
||||
}
|
||||
|
||||
guint32
|
||||
gdk_drag_get_protocol_for_display(GdkDisplay *display, guint32 xid,
|
||||
GdkDragProtocol *protocol)
|
||||
{
|
||||
GdkWindow *window;
|
||||
|
||||
window = gdk_window_lookup ((GdkNativeWindow) xid);
|
||||
|
||||
if (window &&
|
||||
g_object_get_data (G_OBJECT (window), "gdk-dnd-registered") != NULL)
|
||||
{
|
||||
*protocol = GDK_DRAG_PROTO_LOCAL;
|
||||
return xid;
|
||||
}
|
||||
|
||||
*protocol = GDK_DRAG_PROTO_NONE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_drag_find_window_for_screen (GdkDragContext *context,
|
||||
GdkWindow *drag_window,
|
||||
GdkScreen *screen,
|
||||
gint x_root,
|
||||
gint y_root,
|
||||
GdkWindow **dest_window,
|
||||
GdkDragProtocol *protocol)
|
||||
{
|
||||
GdkWindow *dest;
|
||||
|
||||
g_return_if_fail (context != NULL);
|
||||
|
||||
dest = gdk_window_get_pointer (NULL, &x_root, &y_root, NULL);
|
||||
|
||||
if (context->dest_window != dest)
|
||||
{
|
||||
guint32 recipient;
|
||||
|
||||
/* Check if new destination accepts drags, and which protocol */
|
||||
if ((recipient = gdk_drag_get_protocol (GDK_WINDOW_DFB_ID (dest),
|
||||
protocol)))
|
||||
{
|
||||
*dest_window = gdk_window_lookup ((GdkNativeWindow) recipient);
|
||||
if (dest_window)
|
||||
g_object_ref (*dest_window);
|
||||
}
|
||||
else
|
||||
*dest_window = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
*dest_window = context->dest_window;
|
||||
if (*dest_window)
|
||||
g_object_ref (*dest_window);
|
||||
|
||||
*protocol = context->protocol;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
gboolean
|
||||
gdk_drag_motion (GdkDragContext *context,
|
||||
GdkWindow *dest_window,
|
||||
GdkDragProtocol protocol,
|
||||
gint x_root,
|
||||
gint y_root,
|
||||
GdkDragAction suggested_action,
|
||||
GdkDragAction possible_actions,
|
||||
guint32 time)
|
||||
{
|
||||
GdkDragContextPrivate *private;
|
||||
|
||||
g_return_val_if_fail (context != NULL, FALSE);
|
||||
|
||||
private = GDK_DRAG_CONTEXT_PRIVATE_DATA (context);
|
||||
|
||||
if (context->dest_window != dest_window)
|
||||
{
|
||||
GdkEvent event;
|
||||
|
||||
/* Send a leave to the last destination */
|
||||
gdk_drag_do_leave (context, time);
|
||||
private->drag_status = GDK_DRAG_STATUS_DRAG;
|
||||
|
||||
/* Check if new destination accepts drags, and which protocol */
|
||||
if (dest_window)
|
||||
{
|
||||
context->dest_window = g_object_ref (dest_window);
|
||||
context->protocol = protocol;
|
||||
|
||||
switch (protocol)
|
||||
{
|
||||
case GDK_DRAG_PROTO_LOCAL:
|
||||
local_send_enter (context, time);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
context->suggested_action = suggested_action;
|
||||
}
|
||||
else
|
||||
{
|
||||
context->dest_window = NULL;
|
||||
context->action = 0;
|
||||
}
|
||||
|
||||
/* Push a status event, to let the client know that
|
||||
* the drag changed
|
||||
*/
|
||||
|
||||
event.dnd.type = GDK_DRAG_STATUS;
|
||||
event.dnd.window = context->source_window;
|
||||
/* We use this to signal a synthetic status. Perhaps
|
||||
* we should use an extra field...
|
||||
*/
|
||||
event.dnd.send_event = TRUE;
|
||||
event.dnd.context = context;
|
||||
event.dnd.time = time;
|
||||
|
||||
gdk_event_put (&event);
|
||||
}
|
||||
else
|
||||
{
|
||||
context->suggested_action = suggested_action;
|
||||
}
|
||||
|
||||
/* Send a drag-motion event */
|
||||
|
||||
private->last_x = x_root;
|
||||
private->last_y = y_root;
|
||||
|
||||
if (context->dest_window)
|
||||
{
|
||||
if (private->drag_status == GDK_DRAG_STATUS_DRAG)
|
||||
{
|
||||
switch (context->protocol)
|
||||
{
|
||||
case GDK_DRAG_PROTO_LOCAL:
|
||||
local_send_motion (context,
|
||||
x_root, y_root, suggested_action, time);
|
||||
break;
|
||||
|
||||
case GDK_DRAG_PROTO_NONE:
|
||||
g_warning ("GDK_DRAG_PROTO_NONE is not valid in gdk_drag_motion()");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_drag_drop (GdkDragContext *context,
|
||||
guint32 time)
|
||||
{
|
||||
g_return_if_fail (context != NULL);
|
||||
|
||||
if (context->dest_window)
|
||||
{
|
||||
switch (context->protocol)
|
||||
{
|
||||
case GDK_DRAG_PROTO_LOCAL:
|
||||
local_send_drop (context, time);
|
||||
break;
|
||||
case GDK_DRAG_PROTO_NONE:
|
||||
g_warning ("GDK_DRAG_PROTO_NONE is not valid in gdk_drag_drop()");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
gdk_drag_abort (GdkDragContext *context,
|
||||
guint32 time)
|
||||
{
|
||||
g_return_if_fail (context != NULL);
|
||||
|
||||
gdk_drag_do_leave (context, time);
|
||||
}
|
||||
|
||||
/* Destination side */
|
||||
|
||||
void
|
||||
gdk_drag_status (GdkDragContext *context,
|
||||
GdkDragAction action,
|
||||
guint32 time)
|
||||
{
|
||||
GdkDragContextPrivate *private;
|
||||
GdkDragContext *src_context;
|
||||
GdkEvent event;
|
||||
|
||||
g_return_if_fail (context != NULL);
|
||||
|
||||
private = GDK_DRAG_CONTEXT_PRIVATE_DATA (context);
|
||||
|
||||
src_context = gdk_drag_context_find (TRUE,
|
||||
context->source_window,
|
||||
context->dest_window);
|
||||
|
||||
if (src_context)
|
||||
{
|
||||
GdkDragContextPrivate *private;
|
||||
|
||||
private = GDK_DRAG_CONTEXT_PRIVATE_DATA (src_context);
|
||||
|
||||
if (private->drag_status == GDK_DRAG_STATUS_MOTION_WAIT)
|
||||
private->drag_status = GDK_DRAG_STATUS_DRAG;
|
||||
|
||||
event.dnd.type = GDK_DRAG_STATUS;
|
||||
event.dnd.window = src_context->source_window;
|
||||
event.dnd.send_event = FALSE;
|
||||
event.dnd.context = src_context;
|
||||
event.dnd.time = time;
|
||||
|
||||
src_context->action = action;
|
||||
|
||||
gdk_event_put (&event);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
gdk_drop_reply (GdkDragContext *context,
|
||||
gboolean ok,
|
||||
guint32 time)
|
||||
{
|
||||
g_return_if_fail (context != NULL);
|
||||
}
|
||||
|
||||
void
|
||||
gdk_drop_finish (GdkDragContext *context,
|
||||
gboolean success,
|
||||
guint32 time)
|
||||
{
|
||||
GdkDragContextPrivate *private;
|
||||
GdkDragContext *src_context;
|
||||
GdkEvent event;
|
||||
|
||||
g_return_if_fail (context != NULL);
|
||||
|
||||
private = GDK_DRAG_CONTEXT_PRIVATE_DATA (context);
|
||||
|
||||
src_context = gdk_drag_context_find (TRUE,
|
||||
context->source_window,
|
||||
context->dest_window);
|
||||
if (src_context)
|
||||
{
|
||||
g_object_ref (src_context);
|
||||
|
||||
event.dnd.type = GDK_DROP_FINISHED;
|
||||
event.dnd.window = src_context->source_window;
|
||||
event.dnd.send_event = FALSE;
|
||||
event.dnd.context = src_context;
|
||||
|
||||
gdk_event_put (&event);
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
gdk_drag_drop_succeeded (GdkDragContext *context)
|
||||
{
|
||||
g_warning("gdk_drag_drop_succeeded unimplemented \n");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
gdk_window_register_dnd (GdkWindow *window)
|
||||
{
|
||||
g_return_if_fail (window != NULL);
|
||||
|
||||
if (g_object_get_data (G_OBJECT (window), "gdk-dnd-registered") != NULL)
|
||||
return;
|
||||
|
||||
g_object_set_data (G_OBJECT (window),
|
||||
"gdk-dnd-registered",
|
||||
GINT_TO_POINTER (TRUE));
|
||||
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
* gdk_drag_get_selection:
|
||||
* Returns the selection atom for the current source window
|
||||
* arguments:
|
||||
*
|
||||
* results:
|
||||
*************************************************************/
|
||||
|
||||
GdkAtom
|
||||
gdk_drag_get_selection (GdkDragContext *context)
|
||||
{
|
||||
g_return_val_if_fail (context != NULL, GDK_NONE);
|
||||
|
||||
if (context->protocol == GDK_DRAG_PROTO_LOCAL)
|
||||
return (GDK_DRAG_CONTEXT_PRIVATE_DATA (context))->local_selection;
|
||||
else
|
||||
return GDK_NONE;
|
||||
}
|
||||
|
||||
#define __GDK_DND_X11_C__
|
||||
#include "gdkaliasdef.c"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user