Compare commits
433 Commits
interim-re
...
main
Author | SHA1 | Date |
---|---|---|
Nicolas H | 8d31ee3056 | |
Nicolas H | 79d4f6f7a9 | |
Nicolas H | ea7f53be41 | |
Markus Gans | cf37e826e9 | |
Markus Gans | 3bf9713d23 | |
Markus Gans | 45110c5b21 | |
Markus Gans | 7170fc846c | |
Markus Gans | 9931f75a51 | |
Markus Gans | 65c249dfe0 | |
Markus Gans | c4376bae3e | |
Markus Gans | 85ae1612fd | |
Markus Gans | de4ac269e4 | |
Markus Gans | 2dc8d7f2d3 | |
Markus Gans | e38d604544 | |
Markus Gans | 7d426ae25c | |
Markus Gans | 5336462e68 | |
Markus Gans | 7f9ba7464b | |
Markus Gans | 95c0717589 | |
Markus Gans | 920daaba1f | |
Markus Gans | f06ccc6495 | |
Markus Gans | 795ebcdea8 | |
Markus Gans | eacc857143 | |
Markus Gans | 7462c60cfd | |
Markus Gans | af5ec304d8 | |
Markus Gans | 5f761199a7 | |
Markus Gans | f5b4537223 | |
Markus Gans | d12875682d | |
Markus Gans | 07f6bda1ba | |
Markus Gans | 8ab4c02f42 | |
Markus Gans | 3cf1ae0134 | |
Markus Gans | 24553aa7d0 | |
Markus Gans | 0fefcd81c2 | |
Markus Gans | 9ba7fc6178 | |
Markus Gans | 8d54e1c11f | |
Markus Gans | 38df8e2db2 | |
Markus Gans | 4c3b5b6737 | |
Markus Gans | 8a7ce330a3 | |
Markus Gans | d5ec54dcfd | |
Markus Gans | 865e78d9de | |
Markus Gans | 5a6644de98 | |
Markus Gans | 4acca85a13 | |
Markus Gans | 9df509dd3b | |
Markus Gans | 597f9e772b | |
Markus Gans | 0e7488f646 | |
Markus Gans | 7ae9f38229 | |
Markus Gans | 6deb262dd7 | |
Markus Gans | e6dfd73e7a | |
Markus Gans | d4f629f183 | |
Markus Gans | 465fd9510a | |
Markus Gans | f048d846da | |
Markus Gans | 73faadd852 | |
Markus Gans | 59917ed126 | |
Markus Gans | 48a67c4eab | |
Markus Gans | a55b33977c | |
Markus Gans | 28f41f5d6c | |
Markus Gans | a1107f96c7 | |
Markus Gans | baa0c60c79 | |
Markus Gans | 5b789e4110 | |
Markus Gans | fc7be67f2a | |
Markus Gans | eb61e6fec0 | |
Markus Gans | b2de303cfc | |
Markus Gans | 783f58bc4b | |
Markus Gans | 4146b20028 | |
Markus Gans | 47cb79a7f0 | |
Markus Gans | c4b799d98f | |
Markus Gans | 226663889b | |
Markus Gans | 4517038521 | |
Markus Gans | 7868a0dee9 | |
Markus Gans | 25f2abe175 | |
Markus Gans | ae1fdecb40 | |
Markus Gans | 6c7fe98805 | |
Markus Gans | a0a65ee9fb | |
Markus Gans | b28cf8b9c1 | |
Markus Gans | 24696ffcd1 | |
Markus Gans | 96f2f28f21 | |
Markus Gans | d71ca6f028 | |
Markus Gans | 1d3522f35b | |
Markus Gans | 63672a28d5 | |
Markus Gans | d9003af7a1 | |
Markus Gans | 396985f594 | |
Markus Gans | a053ccd69e | |
Markus Gans | ff70abd073 | |
Markus Gans | 0ee09aad2c | |
Markus Gans | 98f9cd5718 | |
Markus Gans | 61eb8b8166 | |
Markus Gans | e0cc130074 | |
Markus Gans | a4a3d93203 | |
Markus Gans | 531eb22182 | |
Markus Gans | b69f3fc5d8 | |
Markus Gans | 3c467c9c07 | |
Markus Gans | 6a8459c52b | |
Markus Gans | 49ce0be914 | |
Markus Gans | 4f49d9ffaa | |
Markus Gans | 2c9778698e | |
Markus Gans | a14c45d8c7 | |
Markus Gans | 3c46dad798 | |
Markus Gans | 8d189e9ec4 | |
Markus Gans | 493b1231fd | |
Markus Gans | 12ec2b0574 | |
Markus Gans | 396cda69e8 | |
Markus Gans | 73e587b9c2 | |
Markus Gans | 97f1dea7b8 | |
Markus Gans | 9f1bd87151 | |
Markus Gans | e74dccf481 | |
Markus Gans | adccd6ae3b | |
Markus Gans | 37f238eef7 | |
Markus Gans | fb8baf8c5c | |
Markus Gans | c7d6af8b31 | |
Markus Gans | a821030333 | |
Markus Gans | 61434b4d16 | |
Markus Gans | dcc66b14db | |
Markus Gans | 021cd12d58 | |
Markus Gans | 31eb81d612 | |
Markus Gans | b428db3d9c | |
Markus Gans | 9c1f6fb05a | |
Markus Gans | 61d88eb413 | |
Markus Gans | 722be333df | |
Markus Gans | 72bcce87b7 | |
Markus Gans | c1a2ef59e4 | |
Markus Gans | 4478948bc7 | |
Markus Gans | b15a665729 | |
Markus Gans | 3d9f621258 | |
Markus Gans | a69d38fb1e | |
Markus Gans | d10e2888ac | |
Markus Gans | 44d6d8cdb9 | |
Markus Gans | ff2e29b246 | |
Markus Gans | 5092244b81 | |
Markus Gans | ff555baf3b | |
Markus Gans | 51105e7db2 | |
Markus Gans | fdd7ff98ec | |
Markus Gans | 28080abb3e | |
Markus Gans | 147e213e07 | |
Axenow | 42854b3c50 | |
Markus Gans | b9042d5a03 | |
Markus Gans | 2b33c1875a | |
Markus Gans | 5574104dd9 | |
Markus Gans | c2894b6591 | |
Markus Gans | 50fc6fdb63 | |
Markus Gans | b54d1c2f38 | |
Markus Gans | 6fef7a43a5 | |
Markus Gans | 6d72168ca4 | |
Markus Gans | 07127634fd | |
Markus Gans | 8f383a4def | |
Markus Gans | f07a481d46 | |
Markus Gans | 13dc85860b | |
Markus Gans | d8b35dc1a7 | |
Markus Gans | 361f0e6a14 | |
Markus Gans | 53ba96504f | |
Markus Gans | 219ac28fb7 | |
Markus Gans | c64b17ac49 | |
Markus Gans | 7749d28b92 | |
Markus Gans | 9845a022a3 | |
Markus Gans | ccb7eeb3c6 | |
Markus Gans | 0ff67da077 | |
Markus Gans | c1b2699e53 | |
Markus Gans | 3d2a0c6dd2 | |
Markus Gans | 70eabe93d6 | |
Markus Gans | f76a9d2114 | |
Markus Gans | 6a20b728ba | |
Markus Gans | 1f1c6053a7 | |
Markus Gans | df672dfd73 | |
Markus Gans | a0e1115ff6 | |
Markus Gans | 45ddbd88d3 | |
Markus Gans | 8a153c6d45 | |
Markus Gans | 59830cbd05 | |
Markus Gans | 6c6b70ed9e | |
Markus Gans | 9e68344a2b | |
Markus Gans | f20e036a9e | |
Markus Gans | 5a60794b85 | |
Markus Gans | 379c45efb5 | |
Markus Gans | 923822ca25 | |
Markus Gans | 4a8b863238 | |
Markus Gans | 21267f7ead | |
Markus Gans | 87777ad27c | |
Markus Gans | d69b414094 | |
Markus Gans | 5f447e8267 | |
Markus Gans | 0be377a94a | |
Markus Gans | deccb4b74c | |
Markus Gans | a90cd1ad55 | |
Markus Gans | 0fd6439f5a | |
Markus Gans | 4840978273 | |
Markus Gans | 1c3c687878 | |
Markus Gans | 0de0676092 | |
Markus Gans | 159d086af4 | |
Markus Gans | 2b1774e578 | |
Markus Gans | 803e54d456 | |
Markus Gans | 88667f2cbb | |
Markus Gans | 9da4f00115 | |
Markus Gans | d08dd8e9f4 | |
Markus Gans | 136b57eac6 | |
Markus Gans | 6de04a3edd | |
Markus Gans | defc1714e4 | |
Markus Gans | fd92d7f4d8 | |
Markus Gans | 7d4de8e46f | |
Markus Gans | 62b4a68277 | |
Markus Gans | 1ff34f64e1 | |
Markus Gans | 7a520dc944 | |
Markus Gans | 9b654768aa | |
Markus Gans | 90b389035e | |
Markus Gans | f364f76aea | |
Markus Gans | 3bb001677f | |
Markus Gans | ac1ebfefad | |
Markus Gans | 20c3cf218e | |
Markus Gans | 53d2f04e77 | |
Markus Gans | bb52b6fd7e | |
Markus Gans | 53f1059312 | |
Markus Gans | a1b31179c2 | |
Markus Gans | 4c0404ac60 | |
Markus Gans | 86ccd30eae | |
Markus Gans | 45218b0f61 | |
Markus Gans | b58936a6a2 | |
Markus Gans | 77638fcaa0 | |
Markus Gans | 925f106846 | |
Markus Gans | 3102fa6e59 | |
Markus Gans | e5902a6ee6 | |
Markus Gans | ff6ff14793 | |
Markus Gans | 65b47b40f2 | |
Markus Gans | 3723d071a3 | |
Markus Gans | b23974858e | |
Markus Gans | 164487096c | |
Markus Gans | a33a9e1b6b | |
Markus Gans | 43bda37f71 | |
Markus Gans | 83a6ee497b | |
Markus Gans | dd625e0822 | |
Markus Gans | 07a29910b7 | |
Markus Gans | b810b51e65 | |
Markus Gans | b05513a8f8 | |
Markus Gans | 9221703a40 | |
Markus Gans | 057c295af6 | |
Markus Gans | 60009d8f4b | |
Markus Gans | 06d65ed676 | |
Markus Gans | 3e3076838f | |
Markus Gans | 815562173f | |
Markus Gans | bd20b9aa8c | |
Markus Gans | 3183e376bb | |
Markus Gans | eeac24aef2 | |
Markus Gans | c0b1dc5924 | |
Markus Gans | 0ea63fa1c8 | |
Markus Gans | 926f9278bc | |
Markus Gans | fc1b9ebdf3 | |
Markus Gans | d126c4996a | |
Markus Gans | 853799b4d6 | |
Markus Gans | 23ddf5d6f2 | |
Markus Gans | 3a391f5fe5 | |
Markus Gans | b7639f5301 | |
Markus Gans | 867dabf637 | |
Markus Gans | 74d8585561 | |
Marek Habersack | d34e839f83 | |
Markus Gans | aacf27ff74 | |
Markus Gans | cbe1179443 | |
Markus Gans | 15fe47327e | |
Markus Gans | 3de8e73281 | |
Markus Gans | 8c434777bc | |
Markus Gans | 5bb3f1ac9b | |
Markus Gans | 7ba294c496 | |
Markus Gans | 4540a6f455 | |
Markus Gans | b3c367a168 | |
Markus Gans | be1c2b2639 | |
Markus Gans | d4c964e0d8 | |
Markus Gans | 687043b174 | |
Markus Gans | dedc1f3410 | |
Markus Gans | 0727a59d4a | |
Markus Gans | 513c80efa1 | |
Markus Gans | 5852c8129b | |
Markus Gans | 3112b6cbab | |
Markus Gans | 965cc95201 | |
Markus Gans | df12308b06 | |
Markus Gans | 18ec10ffd1 | |
Markus Gans | d76dcf2e9c | |
Markus Gans | 88d5c0d050 | |
Markus Gans | b116fa5930 | |
Markus Gans | 1671a5ff3e | |
Markus Gans | ff39c85a33 | |
Markus Gans | 38d4fea995 | |
Markus Gans | 26b00e2b10 | |
Markus Gans | f30bb0f79b | |
Markus Gans | bdd6753444 | |
Markus Gans | a924eeafb4 | |
Markus Gans | d9f7985b40 | |
Markus Gans | dae345fbac | |
Markus Gans | 5e79e0a1fa | |
Markus Gans | 5ceee8b4c8 | |
Markus Gans | 58c775c252 | |
Markus Gans | 5e4a71dc0d | |
Markus Gans | 7499f424dc | |
Markus Gans | 762b232fd0 | |
Markus Gans | b0080b00cf | |
Markus Gans | 937654710b | |
Markus Gans | 66ff1ba208 | |
Markus Gans | a279a0981a | |
Markus Gans | 298755a0fe | |
Markus Gans | 6b9336d6c1 | |
Markus Gans | bccdbbd3ad | |
Markus Gans | 8c67f64db4 | |
Markus Gans | e15f1a344a | |
Markus Gans | bc3afa6235 | |
Markus Gans | 81e00a22d3 | |
Markus Gans | d1fedfec9f | |
Markus Gans | 69db7417ad | |
Markus Gans | 9a40890026 | |
Markus Gans | 37ed970319 | |
Markus Gans | 43de8d6150 | |
Markus Gans | 8c90cd2a4c | |
Markus Gans | 248cf8a0ba | |
Markus Gans | ad2766e706 | |
Markus Gans | 4075e6e1ed | |
Markus Gans | bda1582659 | |
Markus Gans | 6b3e0135c7 | |
Markus Gans | 4165772265 | |
Markus Gans | 924d69225f | |
Markus Gans | dec830a0d8 | |
Markus Gans | 258b2489a3 | |
Markus Gans | 5f7f2116f7 | |
Markus Gans | 3bd3819a1a | |
Markus Gans | 44e157e493 | |
Markus Gans | 5a43a018cf | |
Markus Gans | bd81fdb069 | |
Markus Gans | 5bd46e32ec | |
Markus Gans | 3c5c2aa69e | |
Markus Gans | 5257beb73a | |
Markus Gans | 77b76b7a2a | |
Markus Gans | aac2231898 | |
Markus Gans | 0e12be93cc | |
Markus Gans | 92c120b79e | |
Markus Gans | 0ba913a23e | |
Markus Gans | 8026f64754 | |
Markus Gans | f78aba0395 | |
Markus Gans | 2b9c64a445 | |
Markus Gans | 3c52e77448 | |
Markus Gans | 8d9e92023a | |
Markus Gans | c49252ab45 | |
Markus Gans | ff9673d262 | |
Markus Gans | 7cd169758c | |
Markus Gans | 38df039235 | |
Markus Gans | 340d78e433 | |
Markus Gans | 73293da481 | |
Markus Gans | 1b35fd0623 | |
Markus Gans | 4cd92ea36e | |
Markus Gans | 52c5b412f7 | |
Markus Gans | b9ef1200e8 | |
Markus Gans | 7c46d52ef4 | |
Markus Gans | c93c0b6e33 | |
Markus Gans | 63366b7ef9 | |
Markus Gans | 622eb7089c | |
Markus Gans | 5e436e91dc | |
Markus Gans | 22e47adbcb | |
Marek Habersack | c4d9b33628 | |
Markus Gans | 75ec596323 | |
Markus Gans | 66fe27e5bc | |
Markus Gans | 6811b32e8a | |
Markus Gans | fa66a7091e | |
Markus Gans | 5bd8590dee | |
Markus Gans | 83fbc0a4f5 | |
Markus Gans | ec502d208a | |
Markus Gans | cc720dc7db | |
Markus Gans | 7f206e88f0 | |
Markus Gans | e3b226b10d | |
Markus Gans | 439b8310ef | |
Markus Gans | 93f464f30e | |
Markus Gans | e3fb0c4a56 | |
Markus Gans | cefd894c40 | |
Markus Gans | b0febda5b4 | |
Markus Gans | 2270f4cde5 | |
Markus Gans | 54dbbbcf4e | |
Markus Gans | 8813290a89 | |
Markus Gans | a3e3cf22d8 | |
Markus Gans | d91cd10311 | |
Markus Gans | bd4d8bd3a2 | |
Markus Gans | 96cdaa2450 | |
Markus Gans | c4df64c5bc | |
Markus Gans | eeb32bd66e | |
Markus Gans | 4dcc573be7 | |
Markus Gans | cb090e8aff | |
Markus Gans | 016f15c860 | |
Markus Gans | 60e64be37b | |
Markus Gans | 6a91738f48 | |
Markus Gans | 2b110d87d8 | |
Markus Gans | a56ba6274e | |
Markus Gans | 652dc67e6e | |
Markus Gans | c365f07298 | |
Markus Gans | 25a068590f | |
Markus Gans | 72fab50cbf | |
Markus Gans | 838ba23c46 | |
Markus Gans | 4135215df5 | |
Markus Gans | 719e9b0586 | |
Markus Gans | 0d1f6a5e51 | |
Markus Gans | 3ad4652883 | |
Markus Gans | bd3b2b31bb | |
Markus Gans | 250c04cefd | |
Markus Gans | bc389b730e | |
Markus Gans | 43f97a0d6a | |
Markus Gans | 17540c9581 | |
Markus Gans | 831e9fe05e | |
Markus Gans | 2a06915f1c | |
Markus Gans | 8e618812ac | |
Markus Gans | eb8ae63b72 | |
Markus Gans | 9a694ab267 | |
Markus Gans | 81a4e72916 | |
Markus Gans | ac9ed260f5 | |
Markus Gans | 602526686c | |
Markus Gans | f6c21db7e7 | |
Markus Gans | f3bdc3b410 | |
Markus Gans | eeb78aaea7 | |
Markus Gans | 554d26ca00 | |
Markus Gans | ae38a45a5e | |
Markus Gans | c2b6b2c0e2 | |
Markus Gans | b459d55ae8 | |
Markus Gans | fd924233c3 | |
Markus Gans | cef13611d1 | |
Markus Gans | a881b471f3 | |
Markus Gans | 6ce8c5cb27 | |
Markus Gans | fe0c22abe4 | |
Markus Gans | 7ef9b154b9 | |
Markus Gans | 00dc24468f | |
Markus Gans | 46f934907d | |
Markus Gans | d6fe46c922 | |
Markus Gans | 8a45d9c1cb | |
Markus Gans | 77619bd8f8 | |
Markus Gans | 1b23b0806b | |
Markus Gans | 31c828d25e | |
Markus Gans | fab5aaafdd | |
Markus Gans | 527f7d3432 | |
Markus Gans | 936995cbdd | |
Markus Gans | 9ba1b77069 | |
Markus Gans | 48f88fdeec | |
Markus Gans | 3537152c28 | |
Markus Gans | 4046f05a0c | |
Markus Gans | 11871cba89 | |
Markus Gans | f30b8f9431 | |
Markus Gans | fea2d1f5b2 | |
Markus Gans | 5778ac2741 | |
Markus Gans | e9634463b1 | |
Markus Gans | da2bea4268 |
|
@ -1,11 +1,15 @@
|
|||
exclude:
|
||||
- /fonts/.*
|
||||
- /scripts/.*
|
||||
- /doc/.*
|
||||
- /build.sh
|
||||
- /ltmain.sh
|
||||
component_depth: 1
|
||||
- /debian/.*
|
||||
- /doc/.*
|
||||
- /examples/.*
|
||||
- /fonts/.*
|
||||
- /icon/.*
|
||||
- /logo/.*
|
||||
- /m4/.*
|
||||
- /scripts/.*
|
||||
- /build.sh
|
||||
- /ltmain.sh
|
||||
component_depth: 3
|
||||
languages:
|
||||
- cpp
|
||||
- script
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
engines:
|
||||
duplication:
|
||||
enabled: true
|
||||
exclude_paths:
|
||||
- 'fonts/**'
|
||||
- 'test/**'
|
||||
exclude_paths:
|
||||
- 'debian/**'
|
||||
- 'doc/**'
|
||||
- 'icon/**'
|
||||
- 'logo/**'
|
||||
- 'm4/**'
|
||||
- 'scripts/**'
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
PROJECT_NAME = "The Final Cut"
|
||||
PROJECT_NAME = "FINAL CUT"
|
||||
EXCLUDE = debian, doc, icon, logo, m4, scripts, examples
|
||||
EXCLUDE_PATTERNS = */test/*
|
||||
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
# EditorConfig helps maintain consistent coding styles
|
||||
# for multiple developers working on the same project
|
||||
# across various editors and IDEs.
|
||||
#
|
||||
# http://editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
max_line_length=72
|
||||
|
||||
[ChangeLog]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.txt]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
# Domain-Specific Properties
|
||||
[*.h]
|
||||
curly_bracket_next_line = true
|
||||
spaces_around_operators = true
|
||||
indent_brace_style = Allman
|
||||
|
||||
[*.cpp]
|
||||
curly_bracket_next_line = true
|
||||
spaces_around_operators = true
|
||||
indent_brace_style = Allman
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a bug report
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Describe the bug
|
||||
|
||||
Give a detailed description of what the bug is.
|
||||
|
||||
|
||||
## How to reproduce the bug?
|
||||
|
||||
Explain step-by-step the procedure to reproduce this behavior.
|
||||
|
||||
|
||||
## What behavior did you expect?
|
||||
|
||||
Describe what you would expect instead.
|
||||
|
||||
|
||||
## In which environment did the bug occur?
|
||||
* Which operating system do you use?<br />
|
||||
Linux, FreeBSD, NetBSD, OpenBSD, macOS, Cygwin, or Solaris
|
||||
|
||||
* Which distribution do you use?
|
||||
|
||||
* On which CPU architecture did you test?
|
||||
|
||||
* Which compiler in which version did you use?
|
||||
|
||||
* Which terminal do you use?
|
||||
|
||||
* What does the environment variable $TERM contain?
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Make a suggestion for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Feature Request
|
||||
|
||||
|
||||
**Do you want to solve a problem with your feature request? Please describe it.**
|
||||
|
||||
Describe clearly and precisely what the problem is.
|
||||
Example: I have an issue when [...]
|
||||
|
||||
|
||||
**Your desired solution**
|
||||
|
||||
Describe clearly and concisely what you want to reach.
|
||||
|
||||
|
||||
**Alternatives you have considered**
|
||||
|
||||
Describe clearly and concisely the other solutions you considered.
|
||||
|
||||
|
||||
**Additional context**
|
||||
|
||||
Add additional context or screenshots to your feature request here.
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
name: "ARM build"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, actions-test ]
|
||||
pull_request:
|
||||
branches: [ main, actions-test ]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
name: Build on ${{ matrix.arch }}
|
||||
|
||||
# Run steps on a matrix of 3 arch/distro combinations
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- arch: aarch64
|
||||
- arch: armv7
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Before_install
|
||||
run: |
|
||||
lsb_release -a
|
||||
uname -a
|
||||
whoami
|
||||
tty || echo
|
||||
pwd
|
||||
|
||||
- name: Install dependencies via apt-get
|
||||
run: |
|
||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install \
|
||||
ca-certificates \
|
||||
gcc \
|
||||
g++ \
|
||||
gpm \
|
||||
libgpm-dev \
|
||||
libcppunit-dev \
|
||||
autoconf-archive
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
autoreconf -v --install --force
|
||||
./configure --prefix=/usr
|
||||
make -j10
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
name: "CodeQL analysis"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [main]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Override automatic language detection by changing the below list
|
||||
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
|
||||
language: ['cpp']
|
||||
# Learn more...
|
||||
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
- run: git checkout HEAD^2
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
- name: Build dependencies
|
||||
run: sudo apt-get install autoconf-archive
|
||||
|
||||
- name: Create configure file
|
||||
run: autoreconf -v --install --force
|
||||
|
||||
- name: Create makefiles
|
||||
run: ./configure --prefix=/usr CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG -W -Wall -pedantic"
|
||||
|
||||
- name: Build
|
||||
run: make V=1 -j10
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
|
@ -0,0 +1,57 @@
|
|||
name: "Code coverage"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, actions-test ]
|
||||
pull_request:
|
||||
branches: [ main, actions-test ]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
COVERALLS_REPO_TOKEN: "${{ secrets.COVERALLS_REPO_TOKEN }}"
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Before_install
|
||||
run: |
|
||||
lsb_release -a
|
||||
uname -a
|
||||
whoami
|
||||
tty || echo
|
||||
pwd
|
||||
|
||||
- name: Install dependencies via apt-get
|
||||
run: |
|
||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install \
|
||||
ca-certificates \
|
||||
gcc \
|
||||
g++ \
|
||||
gpm \
|
||||
libgpm-dev \
|
||||
libcppunit-dev \
|
||||
autoconf-archive
|
||||
|
||||
- name: Download coderalls
|
||||
run: pip install --user cpp-coveralls
|
||||
|
||||
- name: Download codecov
|
||||
run: sudo pip install codecov
|
||||
|
||||
- name: Build with with gcov
|
||||
run: script -e -c "./build.sh coverage"
|
||||
|
||||
- name: Coveralls
|
||||
run: coveralls --gcov-options '\-lp' -e debian -e doc -e icon -e logo -e m4 -e scripts -e examples
|
||||
|
||||
- name: Codecov
|
||||
run: bash <(curl -s https://codecov.io/bash)
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
name: "Coverity Scan"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, actions-test ]
|
||||
pull_request:
|
||||
branches: [ main, actions-test ]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
# Ubuntu 16.04 LTS will be removed on September 20, 2021
|
||||
runs-on: ubuntu-16.04
|
||||
#runs-on: ubuntu-18.04
|
||||
|
||||
env:
|
||||
COVERITY_SCAN_BRANCH_PATTERN: "${{ github.ref}}"
|
||||
COVERITY_SCAN_NOTIFICATION_EMAIL: "guru.mail@muenster.de"
|
||||
COVERITY_SCAN_PROJECT_NAME: "${{ github.repository }}"
|
||||
# Set in repo settings -> secrets -> repository secrets
|
||||
COVERITY_SCAN_TOKEN: "${{ secrets.COVERITY_SCAN_TOKEN }}"
|
||||
CURRENT_REF: "${{ github.ref }}"
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Before_install
|
||||
run: |
|
||||
lsb_release -a
|
||||
uname -a
|
||||
whoami
|
||||
tty || echo
|
||||
pwd
|
||||
|
||||
- name: Download coverity scan build tool
|
||||
run: |
|
||||
wget -q https://scan.coverity.com/download/cxx/linux64 \
|
||||
--post-data "token=$COVERITY_SCAN_TOKEN&project=gansm%2Ffinalcut" \
|
||||
-O cov-analysis-linux64.tar.gz
|
||||
mkdir cov-analysis-linux64
|
||||
tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64
|
||||
|
||||
- name: Install dependencies via apt-get
|
||||
run: |
|
||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install \
|
||||
ca-certificates \
|
||||
gcc \
|
||||
g++ \
|
||||
gpm \
|
||||
libgpm-dev \
|
||||
libcppunit-dev \
|
||||
autoconf-archive
|
||||
|
||||
- name: Build with cov-build
|
||||
run: |
|
||||
export PATH=`pwd`/cov-analysis-linux64/bin:$PATH
|
||||
cat cov-int/scm_log.txt || echo
|
||||
autoreconf -v --install --force
|
||||
./configure --prefix=/usr \
|
||||
CPPFLAGS="-DDEBUG" \
|
||||
CXXFLAGS="-g -O0 -DDEBUG -DUNIT_TEST" \
|
||||
--with-unit-test
|
||||
cov-build --dir cov-int make V=1 -j10
|
||||
|
||||
- name: Submit the result to Coverity Scan
|
||||
run: |
|
||||
tar czvf finalcut.tgz cov-int
|
||||
curl \
|
||||
--form token=$COVERITY_SCAN_TOKEN \
|
||||
--form email=$COVERITY_SCAN_NOTIFICATION_EMAIL \
|
||||
--form file=@finalcut.tgz \
|
||||
--form version="main" \
|
||||
--form description="Build submitted via github action" \
|
||||
https://scan.coverity.com/builds?project=gansm%2Ffinalcut
|
||||
|
||||
- name: Make unit test
|
||||
run: |
|
||||
script -e -c "make check" && RET=$? || RET=$?
|
||||
cat test/*.log || echo
|
||||
echo "Exit status: $RET"
|
||||
exit "$RET"
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
name: "Cygwin build"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, actions-test ]
|
||||
pull_request:
|
||||
branches: [ main, actions-test ]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
name: Build on ${{ matrix.platform }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
platform: [x86, x64]
|
||||
|
||||
steps:
|
||||
- name: Install Cygwin
|
||||
uses: egor-tensin/setup-cygwin@v3
|
||||
with:
|
||||
platform: ${{ matrix.platform }}
|
||||
install-dir: C:\cygwin
|
||||
packages: git grep make libncurses-devel gcc-core gcc-g++ automake autoconf autoconf-archive libtool pkgconf cppunit
|
||||
|
||||
- name: Test on Cygwin environment
|
||||
run: |
|
||||
uname -a
|
||||
whoami
|
||||
pwd
|
||||
cygcheck -c -d # Show installed Cygwin packages
|
||||
g++ --version
|
||||
mkdir src && cd src
|
||||
git clone git://github.com/gansm/finalcut.git
|
||||
cd finalcut || echo "The source code directory was not found!"
|
||||
autoreconf --force --install --verbose --warnings=all
|
||||
automake --add-missing --copy
|
||||
./configure --prefix=/usr
|
||||
make -j10
|
||||
shell: C:\cygwin\bin\bash.exe --login '{0}'
|
||||
env:
|
||||
SHELLOPTS: igncr
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
name: "FreeBSD build"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, actions-test ]
|
||||
pull_request:
|
||||
branches: [ main, actions-test ]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-10.15
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Test on FreeBSD 12.2
|
||||
uses: cross-platform-actions/action@v0.0.1
|
||||
with:
|
||||
operating_system: freebsd
|
||||
version: 12.2
|
||||
shell: bash
|
||||
run: |
|
||||
uname -a
|
||||
freebsd-version
|
||||
whoami
|
||||
pwd
|
||||
sudo pkg update
|
||||
sudo pkg install -y lang/gcc devel/autotools autotools automake autoconf autoconf-archive libtool pkgconf devel/ncurses devel/cppunit cppunit
|
||||
g++ --version
|
||||
autoreconf -v --install --force
|
||||
./configure --prefix=/usr
|
||||
make -j10
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
name: "macOS build"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, actions-test ]
|
||||
pull_request:
|
||||
branches: [ main, actions-test ]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Before_install
|
||||
run: |
|
||||
uname -a
|
||||
g++ --version
|
||||
whoami
|
||||
pwd
|
||||
|
||||
- name: Install dependencies via homebrew
|
||||
run: |
|
||||
brew update
|
||||
brew install automake
|
||||
brew install autoconf-archive
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
autoreconf -v --install --force
|
||||
./configure --prefix=/usr
|
||||
make -j10
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
name: "OpenBSD build"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, actions-test ]
|
||||
pull_request:
|
||||
branches: [ main, actions-test ]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-10.15
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Test on OpenBSD 6.8
|
||||
uses: cross-platform-actions/action@v0.0.1
|
||||
with:
|
||||
operating_system: openbsd
|
||||
version: 6.8
|
||||
shell: bash
|
||||
run: |
|
||||
uname -a
|
||||
whoami
|
||||
pwd
|
||||
# http://ftp.openbsd.org/pub/OpenBSD/6.8/packages/amd64/
|
||||
sudo pkg_add gcc-8.4.0 g++-8.4.0 automake-1.16.2 autoconf-2.69p3 autoconf-archive libtool pkgconf cppunit
|
||||
export CXX=eg++
|
||||
export AUTOCONF_VERSION=2.69
|
||||
export AUTOMAKE_VERSION=1.16
|
||||
eg++ --version
|
||||
autoreconf -v --install --force
|
||||
./configure --prefix=/usr
|
||||
make -j10
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
name: "Solaris build"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, actions-test ]
|
||||
pull_request:
|
||||
branches: [ main, actions-test ]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Test on Solaris 11.4
|
||||
uses: vmactions/solaris-vm@v0.0.3
|
||||
with:
|
||||
prepare: pkgutil -y -i gcc5g++ automake autoconf autoconf_archive libtool pkgconfig libcppunit1_12_1 libcppunit_dev
|
||||
run: |
|
||||
uname -a
|
||||
whoami
|
||||
pwd
|
||||
cat /etc/release
|
||||
PATH=/opt/csw/bin:$PATH
|
||||
export PATH
|
||||
autoreconf -v --install --force
|
||||
./configure --prefix=/usr
|
||||
make
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
name: "SonarCloud analysis"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, actions-test ]
|
||||
pull_request:
|
||||
branches: [ main, actions-test ]
|
||||
schedule:
|
||||
- cron: '0 7 * * 2'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
SONAR_TOKEN: "${{ secrets.SONAR_TOKEN }}"
|
||||
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||
|
||||
- name: Before_install
|
||||
run: |
|
||||
lsb_release -a
|
||||
uname -a
|
||||
whoami
|
||||
tty || echo
|
||||
pwd
|
||||
|
||||
- name: Install dependencies via apt-get
|
||||
run: |
|
||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install \
|
||||
ca-certificates \
|
||||
gcc \
|
||||
g++ \
|
||||
gpm \
|
||||
wget \
|
||||
unzip \
|
||||
libgpm-dev \
|
||||
libcppunit-dev \
|
||||
autoconf-archive
|
||||
|
||||
- name: Build with SonarCloud
|
||||
run: |
|
||||
wget -q "https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip"
|
||||
unzip -q "build-wrapper-linux-x86.zip" -d "/tmp" || echo
|
||||
LATEST_VERSION=$(wget -O- https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/ 2>/dev/null | grep 'linux.zip"' | cut -d\" -f2 | tail -n1)
|
||||
wget -q "https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/$LATEST_VERSION"
|
||||
unzip -q "$LATEST_VERSION" -d "/tmp" || echo
|
||||
echo "sonar.host.url=https://sonarcloud.io" >> /tmp/sonar-scanner-*/conf/sonar-scanner.properties
|
||||
mkdir /tmp/sonar-cache
|
||||
autoreconf -v --install --force
|
||||
./configure --prefix=/usr
|
||||
/tmp/build-wrapper-linux-x86/build-wrapper-linux-x86-64 --out-dir bw-output make all
|
||||
/tmp/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner
|
||||
|
|
@ -32,13 +32,17 @@ Makefile.in
|
|||
/missing
|
||||
/stamp-h1
|
||||
/test-driver
|
||||
src/.depend
|
||||
src/.deps/
|
||||
src/.libs/
|
||||
examples/.deps/
|
||||
examples/.libs/
|
||||
examples/calculator
|
||||
examples/dialog
|
||||
examples/busy
|
||||
examples/event-log
|
||||
examples/string-operations
|
||||
examples/background-color
|
||||
examples/opti-move
|
||||
examples/termcap
|
||||
examples/hello
|
||||
|
@ -49,12 +53,15 @@ examples/windows
|
|||
examples/term-attributes
|
||||
examples/transparent
|
||||
examples/input-dialog
|
||||
examples/fullwidth-character
|
||||
examples/7segment
|
||||
examples/choice
|
||||
examples/listbox
|
||||
examples/listview
|
||||
examples/checklist
|
||||
examples/treeview
|
||||
examples/mandelbrot
|
||||
examples/rotozoomer
|
||||
examples/keyboard
|
||||
examples/mouse
|
||||
examples/timer
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
extraction:
|
||||
cpp:
|
||||
prepare:
|
||||
packages:
|
||||
- autoconf-archive
|
||||
configure:
|
||||
command:
|
||||
- autoreconf -v --install --force
|
||||
- ./configure --prefix=/usr CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG -W -Wall -pedantic"
|
||||
index:
|
||||
build_command:
|
||||
- make V=1 -j10
|
||||
|
94
.travis.yml
|
@ -1,94 +0,0 @@
|
|||
language: cpp
|
||||
dist: trusty
|
||||
sudo: required
|
||||
compiler:
|
||||
- gcc
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- autotools-dev
|
||||
- automake
|
||||
- autoconf
|
||||
- autoconf-archive
|
||||
- libtool
|
||||
- libglib2.0-dev
|
||||
- libncurses5-dev
|
||||
- gpm
|
||||
- libgpm-dev
|
||||
- gperf
|
||||
- libcppunit-dev
|
||||
|
||||
env:
|
||||
global:
|
||||
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
|
||||
# via the "travis encrypt" command using the project repo's public key
|
||||
- secure: |-
|
||||
wvCvMaIm7LoSyWHmpRXvJIetdMnJKsLLxuon6r6BSfpyimoz5FIMEhNhfSt2psv8tJHZgN
|
||||
/FcMcLhnTuTMIjvtlEtb3syfHDaNs7S2q3rm6LCmuIUU4ECAwAorkMQbXcyh5rgPlDMDiw
|
||||
CyBE8O1yFQebAFxRoP181+0uI2IiIP/8EW3P5PDSQzds+9fnnwrFS+OeBoUZfxT0F2kj2f
|
||||
kMXZN4+KmeVIrkqtj8hlRcicLgBPm4hrK5IEUcFLtAbzPj72wkV1duiYG6kqDsATmzMK0m
|
||||
5EuMhQ/nL/rbSjhrcRZzPFQ7P31ToSwg1I6cyhMjyXSbpwdppZ/RSwTpqDCdq9l4bDDmvI
|
||||
qizdwYZKcDtyHxm4Zl/LZKwWDsGEelcmuJKfdu+QuTgInGNlqulmDykvbsrk9jTimIzHTb
|
||||
F8TOn9IpANlTWmvunGeOarvR9qJReZcwSMq41hdMbsUdHiC1arZjKvINcPVuwikzaNq4iA
|
||||
te6mtSdrfdx1wLxQ6ZYNgKd9hz+uUTlBYl80hkATmq0NPnPQw2KzyG9E6nLrKOy2M0ozO8
|
||||
bL/epiiMBKJ37X1UcRU4WZYq+peLME8EefcPcXOSWNLwJtR7mtON8uMBrLL9CWmRMFD5Hy
|
||||
lQYALW2DhCnDBROKB3gxB/VkBGFNE0IPGeDtBGbLqDtKWPQoL125I=
|
||||
|
||||
matrix:
|
||||
include:
|
||||
#
|
||||
# Coverity Scan
|
||||
#
|
||||
- os: linux
|
||||
env:
|
||||
- TEST="Coverity Scan"
|
||||
addons:
|
||||
coverity_scan:
|
||||
project:
|
||||
name: gansm/finalcut
|
||||
description: Build submitted via Travis CI
|
||||
notification_email: guru.mail@muenster.de
|
||||
build_command_prepend: "autoreconf -v --install --force && ./configure --prefix=/usr CPPFLAGS='-DDEBUG' CXXFLAGS='-g -O0 -DDEBUG' --with-unit-test && make clean"
|
||||
build_command: "make V=1 -j10"
|
||||
branch_pattern: master
|
||||
before_install:
|
||||
- lsb_release -a
|
||||
- uname -a
|
||||
- whoami
|
||||
- sudo apt-get install gpm libgpm-dev libcppunit-dev
|
||||
script:
|
||||
- autoreconf -v --install --force
|
||||
- ./configure --prefix=/usr CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG" --with-unit-test
|
||||
- make V=1 -j10
|
||||
- make check
|
||||
- cat test/*.log
|
||||
|
||||
#
|
||||
# Coveralls
|
||||
#
|
||||
- os: linux
|
||||
env:
|
||||
- TEST="Coveralls"
|
||||
before_install:
|
||||
- lsb_release -a
|
||||
- uname -a
|
||||
- pip install --user cpp-coveralls
|
||||
script:
|
||||
- ./build.sh coverage
|
||||
after_success:
|
||||
- coveralls --gcov-options '\-lp' -e debian -e doc -e icon -e logo -e m4 -e scripts -e examples
|
||||
|
||||
#
|
||||
# macOS
|
||||
#
|
||||
- os: osx
|
||||
env:
|
||||
- TEST="macOS"
|
||||
before_install:
|
||||
- uname -a
|
||||
script:
|
||||
- autoreconf -v --install --force
|
||||
- ./configure --prefix=/usr
|
||||
- make -j10
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# Code of Conduct
|
||||
|
||||
The FINAL CUT Project aims to be a welcoming place and we ask that everyone
|
||||
who interacts with the project and the larger community treat each other
|
||||
with dignity and respect. Individuals who do not behave in this manner will
|
||||
be warned and asked to adjust their behavior; in extreme cases, individuals
|
||||
could get excluded from the project.
|
||||
|
||||
Examples of inappropriate behavior include profane, offensive, or
|
||||
prejudicial language directed at another person, vandalism, or spam.
|
||||
|
633
ChangeLog
|
@ -1,9 +1,638 @@
|
|||
2021-06-26 Markus Gans <guru.mail@muenster.de>
|
||||
* Global non-constant variables are now encapsulated in classes
|
||||
|
||||
2021-06-19 Markus Gans <guru.mail@muenster.de>
|
||||
* Moving the creator methods from FTerm to its own class
|
||||
|
||||
2021-06-16 Markus Gans <guru.mail@muenster.de>
|
||||
* Converted the internal timer from timeval
|
||||
to std::chrono::time_point<system_clock>
|
||||
|
||||
2021-06-06 Markus Gans <guru.mail@muenster.de>
|
||||
* Bug fixing in FString and FTermDetection
|
||||
* FTermDetection now has clean code by using FString instead of char*
|
||||
* Replace std::strlen with stringLength
|
||||
|
||||
2021-06-03 Markus Gans <guru.mail@muenster.de>
|
||||
* Some FString optimizations
|
||||
|
||||
2021-05-30 Markus Gans <guru.mail@muenster.de>
|
||||
* FString internally changed from wchar_t* to std::wstring
|
||||
|
||||
2021-05-24 Markus Gans <guru.mail@muenster.de>
|
||||
* Using std::string for the attribute buffer
|
||||
|
||||
2021-05-22 Markus Gans <guru.mail@muenster.de>
|
||||
* Convert FOptiMove from char[] to std::string
|
||||
|
||||
2021-05-13 Markus Gans <guru.mail@muenster.de>
|
||||
* Prevent duplicate widget in the close widget list
|
||||
|
||||
2021-05-07 Markus Gans <guru.mail@muenster.de>
|
||||
* Some pointers were replaced by references
|
||||
|
||||
2021-05-04 Markus Gans <guru.mail@muenster.de>
|
||||
* Prevent flickering when resizing terminals or redrawing
|
||||
the screen via ctrl-l
|
||||
|
||||
2021-05-02 Markus Gans <guru.mail@muenster.de>
|
||||
* Bugfix for sending multiple SIGWINCH signals from
|
||||
gnome-terminal under Wayland
|
||||
|
||||
2021-05-01 Markus Gans <guru.mail@muenster.de>
|
||||
* Replace some std::bind with lambda functions
|
||||
|
||||
2021-04-30 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixes Linux console bug from February 20, 2021
|
||||
|
||||
2021-04-27 Markus Gans <guru.mail@muenster.de>
|
||||
* Code optimization at widget focus
|
||||
|
||||
2021-04-24 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixed mutex deadlock in FLogger
|
||||
|
||||
2021-04-21 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixes the detection of the terminal size after a SIGWINCH signal
|
||||
|
||||
2021-04-18 Markus Gans <guru.mail@muenster.de>
|
||||
* Decoupling the FWidget and FWindow classes from FVTerm
|
||||
* Avoid redrawing widgets when show() is called multiple times
|
||||
* Readjustment of the root widget when the terminal size is changed
|
||||
|
||||
2021-04-11 Markus Gans <guru.mail@muenster.de>
|
||||
* Better support for kitty terminals
|
||||
|
||||
2021-03-31 Markus Gans <guru.mail@muenster.de>
|
||||
* argv is now stored internally as a std::vector container
|
||||
|
||||
2021-03-30 Markus Gans <guru.mail@muenster.de>
|
||||
* Stops terminal refresh during dialog resizing until all
|
||||
child widgets have been redrawn
|
||||
|
||||
2021-03-28 Markus Gans <guru.mail@muenster.de>
|
||||
* Widget now have the virtual method initLayout() to set
|
||||
the widget layouts automatically before the first drawing
|
||||
on the terminal is done. Also texts in full-width characters,
|
||||
whose character width is determined automatically, should be
|
||||
calculated here.
|
||||
|
||||
2021-03-15 Markus Gans <guru.mail@muenster.de>
|
||||
* Dynamic adjustment of the terminal refresh rate between
|
||||
5 and 60 Hz
|
||||
|
||||
2021-03-09 Markus Gans <guru.mail@muenster.de>
|
||||
* Implementation of an own padding print method for sending
|
||||
control codes to the terminal
|
||||
|
||||
2021-02-28 Markus Gans <guru.mail@muenster.de>
|
||||
* Removing the termcap library from the header files so
|
||||
that FINAL CUT programs are not affected by the preprocessor
|
||||
#define macros.
|
||||
Many thanks to Zhenyu Zhang for this optimization suggestion
|
||||
|
||||
2021-02-24 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixed the incorrect display on terminals without
|
||||
UTF-8 character encoding
|
||||
|
||||
2021-02-20 Markus Gans <guru.mail@muenster.de>
|
||||
* Optimize terminal output buffer queue with differencing
|
||||
for strings, and control characters and control sequences
|
||||
|
||||
2021-02-09 Markus Gans <guru.mail@muenster.de>
|
||||
* Added support for combined unicode characters
|
||||
* Added a unit test for the FTermBuffer class
|
||||
* Added a unit test for the FTterm functions
|
||||
|
||||
2020-12-31 Markus Gans <guru.mail@muenster.de>
|
||||
* Refactoring to scoped enumerations
|
||||
|
||||
2020-11-18 Markus Gans <guru.mail@muenster.de>
|
||||
* The terminal update rate is now limited to 60 Hz
|
||||
|
||||
2020-11-14 Markus Gans <guru.mail@muenster.de>
|
||||
* Version 0.7.1
|
||||
* Bugfix: The cursor position was not changed anymore
|
||||
if there was no change to the content
|
||||
* Forcing a direct update for faster terminal output
|
||||
|
||||
2020-11-07 Markus Gans <guru.mail@muenster.de>
|
||||
* Version 0.7.0
|
||||
|
||||
2020-11-04 Markus Gans <guru.mail@muenster.de>
|
||||
* Elimination of unnecessary terminal flushes
|
||||
|
||||
2020-11-03 Markus Gans <guru.mail@muenster.de>
|
||||
* Use FIONREAD to get the number of characters available
|
||||
for reading on stdin
|
||||
|
||||
2020-11-02 Markus Gans <guru.mail@muenster.de>
|
||||
* Non-blocking reading before timeout after keystroke
|
||||
* Every fourth event processing causes a terminal flush
|
||||
* Call of TIOCLINUX only in the Linux console
|
||||
|
||||
2020-11-01 Markus Gans <guru.mail@muenster.de>
|
||||
* Now FINAL CUT queues keyboard and mouse input to speed up
|
||||
the processing of widget events
|
||||
|
||||
2020-10-22 Markus Gans <guru.mail@muenster.de>
|
||||
* Repair terminal update skipping
|
||||
|
||||
2020-10-20 Markus Gans <guru.mail@muenster.de>
|
||||
* For fast mouse movements the keyboard interval was increased
|
||||
from 13.3 to 30 Hz
|
||||
|
||||
2020-10-19 Markus Gans <guru.mail@muenster.de>
|
||||
* Optimize the terminal output speed
|
||||
|
||||
2020-10-17 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixes unit test segfault
|
||||
|
||||
2020-10-11 Markus Gans <guru.mail@muenster.de>
|
||||
* Solaris build fix
|
||||
* Added saving and restoring xterm titles to the stack
|
||||
for vte terminals
|
||||
* Menu key - activates the menu bar
|
||||
* Shift-Menu - opens the dialog menu
|
||||
|
||||
2020-10-08 Markus Gans <guru.mail@muenster.de>
|
||||
* Better keyboard support for urxvt terminals
|
||||
* Screen reports (like Secondary DA) are now read directly
|
||||
* Report Cursor Position (DECXCPR) support
|
||||
* FListView and FListBox now have direct access to the list of client
|
||||
elements via data()
|
||||
|
||||
2020-10-05 Markus Gans <guru.mail@muenster.de>
|
||||
* Now hides the input cursor when a widget gets hidden
|
||||
|
||||
2020-10-04 Markus Gans <guru.mail@muenster.de>
|
||||
* Replaces some C-style arrays with std::array
|
||||
* Now you can use the arrow keys to move a window into the visible area
|
||||
* Removes FData memory leak in FListBoxItem and FListViewItem
|
||||
|
||||
2020-09-27 Markus Gans <guru.mail@muenster.de>
|
||||
* An explanation of the widget tree was added to the document
|
||||
of the first steps
|
||||
|
||||
2020-09-26 Markus Gans <guru.mail@muenster.de>
|
||||
* FData improvements
|
||||
* The number of FObject children can now be limited with
|
||||
setMaxChildren()
|
||||
* FApplication can now have no more than one child widget
|
||||
|
||||
2020-09-25 Markus Gans <guru.mail@muenster.de>
|
||||
* std::clog now streams everything to the FLogger object
|
||||
* Added a unit test for the FData class
|
||||
|
||||
2020-09-23 Markus Gans <guru.mail@muenster.de>
|
||||
* Bugfix: empty FString() + wchar_t
|
||||
|
||||
2020-09-22 Markus Gans <guru.mail@muenster.de>
|
||||
* Bugfix in FDialog::setSize(): Automatic size adjustment and
|
||||
simultaneous widget movement are now possible.
|
||||
|
||||
2020-09-18 Markus Gans <guru.mail@muenster.de>
|
||||
* The generic data type FDataPtr is now deprecated and was
|
||||
completely replaced by the template class FData
|
||||
|
||||
2020-09-11 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixes a problem with mouse input in Cygwin in non-blocking read mode
|
||||
|
||||
2020-09-08 Markus Gans <guru.mail@muenster.de>
|
||||
* Speed up the reaction time of the gpm mouse
|
||||
* FListView now correctly adjusts the size of the scrollbar,
|
||||
when expanding and collapsing by double-clicking
|
||||
|
||||
2020-08-30 Markus Gans <guru.mail@muenster.de>
|
||||
* Adding Windows Terminal detection
|
||||
|
||||
2020-08-15 Markus Gans <guru.mail@muenster.de>
|
||||
* The call of the function setNonBlockingRead() resulted in
|
||||
a high CPU load in idle mode.
|
||||
Thanks to Pavel Stehule for reporting this problem.
|
||||
|
||||
2020-08-11 Markus Gans <guru.mail@muenster.de>
|
||||
* New callback backend was implemented. Callback functions with any
|
||||
number of arguments are now possible.
|
||||
|
||||
2020-07-19 Markus Gans <guru.mail@muenster.de>
|
||||
* API: Some method name changes:
|
||||
FObject::delOwnTimer() -> FObject::delOwnTimers()
|
||||
FObject::delAllTimer() -> FObject::delAllTimers()
|
||||
FWidget::delCallbacks() -> FWidget::delAllCallbacks()
|
||||
|
||||
2020-07-08 Markus Gans <guru.mail@muenster.de>
|
||||
* New data wrapper class FData
|
||||
|
||||
2020-07-06 Markus Gans <guru.mail@muenster.de>
|
||||
* Add a document that describes how to create user themes
|
||||
|
||||
2020-06-11 Markus Gans <guru.mail@muenster.de>
|
||||
* New widget FBusyIndicator to indicate background activity
|
||||
* Added example/busy to demonstrate the functionality of this widget
|
||||
|
||||
2020-06-07 Markus Gans <guru.mail@muenster.de>
|
||||
* The --log-file parameter stores log output to any file. The file
|
||||
can be viewed directly on another terminal with "tail -f".
|
||||
|
||||
2020-06-06 Markus Gans <guru.mail@muenster.de>
|
||||
* Now, the terminal is not initialized before the method show()
|
||||
is called. Or you force it explicitly via the FApplication object.
|
||||
* Simplification of FMouse::createMouseObject()
|
||||
|
||||
2020-05-30 Markus Gans <guru.mail@muenster.de>
|
||||
* With the two new methods FApplication::setDarkTheme() and
|
||||
FApplication::setDefaultTheme() you can now change the theme
|
||||
within an application. An example can be found in examples/ui
|
||||
via the menu items "View" -> "Dark mode".
|
||||
|
||||
2020-05-29 Markus Gans <guru.mail@muenster.de>
|
||||
* Adding a dark theme. Can be activated with the --dark-theme parameter.
|
||||
|
||||
2020-05-28 Markus Gans <guru.mail@muenster.de>
|
||||
* FColorPalette now also uses polymorphism, so you can now
|
||||
easily create your own color palette theme
|
||||
|
||||
2020-05-26 Markus Gans <guru.mail@muenster.de>
|
||||
* FWidgetColors now uses polymorphism, so you can now easily
|
||||
create your own widget color theme
|
||||
* FApplication has got the new virtual method processExternalUserEvent()
|
||||
for user code
|
||||
|
||||
2020-05-24 Markus Gans <guru.mail@muenster.de>
|
||||
* New class FStringStream implements input and output operations
|
||||
on FString based streams
|
||||
* Fixed memory leak in FString move assignment operator
|
||||
|
||||
2020-05-21 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixed the event queue in FApplication
|
||||
|
||||
2020-05-16 Markus Gans <guru.mail@muenster.de>
|
||||
* More direct access to the static FTerm functions
|
||||
|
||||
2020-05-13 Markus Gans <guru.mail@muenster.de>
|
||||
* The new class FLogger for logging, which can be redirected
|
||||
to different I/O channels
|
||||
* Adding the event-log example to show the logging functionality
|
||||
|
||||
2020-05-02 Markus Gans <guru.mail@muenster.de>
|
||||
* Transfer of all termcap functions into the FTermcap class
|
||||
|
||||
2020-04-28 Markus Gans <guru.mail@muenster.de>
|
||||
* Adding the missing method getClientSize()
|
||||
* Static code for the special built-in key sequences
|
||||
|
||||
2020-04-15 Markus Gans <guru.mail@muenster.de>
|
||||
* Better support of general arrow keys
|
||||
* Improved event handling code
|
||||
|
||||
2020-04-13 Markus Gans <guru.mail@muenster.de>
|
||||
* Several small code improvements
|
||||
|
||||
2020-04-09 Markus Gans <guru.mail@muenster.de>
|
||||
* A dialog can now be displayed without a framing border.
|
||||
Many thanks to basedtho for this tip
|
||||
|
||||
2020-03-22 Markus Gans <guru.mail@muenster.de>
|
||||
* A small benchmakt test was added to the Rotozoomer example
|
||||
|
||||
2020-03-08 Markus Gans <guru.mail@muenster.de>
|
||||
* A rotozoomer example was added to demonstrate the drawing speed
|
||||
of FINAL CUT
|
||||
|
||||
2020-03-07 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixes keyboard input buffer problem when opening a modal dialog
|
||||
* Exit the move-resize-mode when the close confirmation dialog
|
||||
is displayed
|
||||
|
||||
2020-03-05 Markus Gans <guru.mail@muenster.de>
|
||||
* Unbuffered reading of keystrokes for better latency
|
||||
* Mouse adjustments when resizing an rxvt terminal
|
||||
|
||||
2020-02-25 Markus Gans <guru.mail@muenster.de>
|
||||
* New command line switch "--no-terminal-data-request" to disable
|
||||
font and title determination
|
||||
|
||||
2020-02-19 Markus Gans <guru.mail@muenster.de>
|
||||
* Some small code improvements
|
||||
* SGRoptimizer improved
|
||||
|
||||
2020-02-16 Markus Gans <guru.mail@muenster.de>
|
||||
* Printing a FStyle object allows you to change video attributes
|
||||
|
||||
2020-02-13 Markus Gans <guru.mail@muenster.de>
|
||||
* Rename setTransShadow() to setColorOverlay()
|
||||
|
||||
2020-02-11 Markus Gans <guru.mail@muenster.de>
|
||||
* Fix collapse() and expand() in FListViewItem()
|
||||
|
||||
2020-02-09 Markus Gans <guru.mail@muenster.de>
|
||||
* Adding a tty check for stdin
|
||||
* An application structure diagram was added to the document
|
||||
of the first steps
|
||||
|
||||
2020-02-04 Markus Gans <guru.mail@muenster.de>
|
||||
* Fix in FListViewIterator
|
||||
* Add screenshorts to the first steps document
|
||||
|
||||
2020-02-02 Markus Gans <guru.mail@muenster.de>
|
||||
* The methods clear() and remove() were added to FListView
|
||||
* Add some const type qualifiers
|
||||
* A small GNU autoconf-archive check
|
||||
|
||||
2020-01-12 Markus Gans <guru.mail@muenster.de>
|
||||
* Add a "widget layout" chapter to the first steps document
|
||||
|
||||
2020-01-09 Markus Gans <guru.mail@muenster.de>
|
||||
* With setText() and clearText() the text in the edit line can be changed
|
||||
without changing the content of the combo box
|
||||
* The setCurrentItem() method was added to the FComboBox widget class.
|
||||
Thanks cybin for the sample code
|
||||
|
||||
2020-01-03 Markus Gans <guru.mail@muenster.de>
|
||||
* Illustrations to explain the widget layout
|
||||
|
||||
2019-12-31 Markus Gans <guru.mail@muenster.de>
|
||||
* The new SGRoptimizer class allows several consecutive parameters
|
||||
from the SGR (Select Graphic Rendition) attributes to be combined
|
||||
into one
|
||||
|
||||
2019-12-23 Markus Gans <guru.mail@muenster.de>
|
||||
* Correction for height and width alignment in adjustSize()
|
||||
* Better setSize() implementation in some widgets
|
||||
|
||||
2019-12-20 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixed the drawing of FLabel widget with the default size
|
||||
of 1×1 character.
|
||||
Thanks to terranpro for reporting this issue
|
||||
|
||||
2019-12-16 Markus Gans <guru.mail@muenster.de>
|
||||
* New widget class FComboBox to provide a dropdown list
|
||||
with an input field
|
||||
|
||||
2019-11-17 Markus Gans <guru.mail@muenster.de>
|
||||
* Revision of FString number input stream
|
||||
|
||||
2019-11-16 Markus Gans <guru.mail@muenster.de>
|
||||
* New widget class FSpinBox to provide spin boxes
|
||||
|
||||
2019-11-06 Markus Gans <guru.mail@muenster.de>
|
||||
* Improved display of the NewFont midline
|
||||
|
||||
2019-11-03 Markus Gans <guru.mail@muenster.de>
|
||||
* Newfont specialization for 8x16 and 9x16 pixel character
|
||||
* Fixes the display of reverse characters on the 16 color
|
||||
Linux console
|
||||
|
||||
2019-10-28 Markus Gans <guru.mail@muenster.de>
|
||||
* Unicode support for 8x16graph font
|
||||
|
||||
2019-10-20 Markus Gans <guru.mail@muenster.de>
|
||||
* New method setInputType() in FLineEdit that allows to obscure
|
||||
password entries
|
||||
* FAcceleratorList reimplemented as non-pointer
|
||||
|
||||
2019-10-15 Markus Gans <guru.mail@muenster.de>
|
||||
* Version 0.6.0
|
||||
|
||||
2019-10-13 Markus Gans <guru.mail@muenster.de>
|
||||
* Compile fix for Cygwin and Linux on arm architectures
|
||||
* A small color palette optimization
|
||||
* Corrected east asian ambiguous character width for OpenBSD, NetBSD,
|
||||
FreeBSD and Solaris
|
||||
|
||||
2019-10-05 Markus Gans <guru.mail@muenster.de>
|
||||
* Internal redesign of the callback call
|
||||
* Mapping of key functions in an associative container to simplify
|
||||
onKeyPress() in FListBox, FListView, FTextView and FScrollView
|
||||
|
||||
2019-10-01 Markus Gans <guru.mail@muenster.de>
|
||||
* Replacing null-terminated wide strings with FString objects
|
||||
* Fix for getColumnWidth() with newfont character
|
||||
|
||||
2019-09-29 Markus Gans <guru.mail@muenster.de>
|
||||
* Streaming into an FTextView() object
|
||||
* Fixes the streaming of empty FString objects into a stream with
|
||||
a width > 0
|
||||
* The FString operator [] now returns a null character ('\0')
|
||||
if the position is equal to the string length
|
||||
|
||||
2019-09-28 Markus Gans <guru.mail@muenster.de>
|
||||
* Support for displaying full-width characters (2 columns wide)
|
||||
on the terminal. This is particularly important for the correct
|
||||
display of CJK characters
|
||||
|
||||
2019-09-16 Markus Gans <guru.mail@muenster.de>
|
||||
* Improve FStartOptions implementation
|
||||
|
||||
2019-09-08 Markus Gans <guru.mail@muenster.de>
|
||||
* Remove the lines of the #pragma pack() directive from the code
|
||||
because they caused a misaligned address
|
||||
|
||||
2019-09-06 Markus Gans <guru.mail@muenster.de>
|
||||
* Outsourcing the initialization data to a separate struct
|
||||
|
||||
2019-09-04 Markus Gans <guru.mail@muenster.de>
|
||||
* The Cygwin and Linux console do not use cp437 character encoding
|
||||
by default anymore
|
||||
|
||||
2019-09-01 Markus Gans <guru.mail@muenster.de>
|
||||
* Removing public + protected data members from classes
|
||||
|
||||
2019-08-25 Markus Gans <guru.mail@muenster.de>
|
||||
* More use of direct initializations
|
||||
|
||||
2019-08-18 Markus Gans <guru.mail@muenster.de>
|
||||
* Solved problem detecting terminal size on quick changes
|
||||
* Update VTerm information only in case of changes
|
||||
* Fixes print() << FPoint() behavior in FScrollView
|
||||
|
||||
2019-08-11 Markus Gans <guru.mail@muenster.de>
|
||||
* FRect has now got a scaleBy() method
|
||||
* Convert drawBorder() to a non-member function using FRect
|
||||
* Converts getHotkeyPos() for sharing into a non-member function
|
||||
|
||||
2019-08-10 Markus Gans <guru.mail@muenster.de>
|
||||
* Pitch and duration of system speaker can now be changed
|
||||
on OpenBSD
|
||||
|
||||
2019-08-07 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixes the Cygwin build
|
||||
|
||||
2019-08-04 Markus Gans <guru.mail@muenster.de>
|
||||
* Reduce the number of interface parameters
|
||||
|
||||
2019-07-31 Markus Gans <guru.mail@muenster.de>
|
||||
* Unit test for the move assignment operator and move constructor
|
||||
in FPoint, FSize and FRect
|
||||
|
||||
2019-07-28 Markus Gans <guru.mail@muenster.de>
|
||||
* FreeBSD can now change the frequency and duration
|
||||
of the pc speaker signal
|
||||
* Added a unit test for the FTermFreeBSD class to test
|
||||
the FreeBSD console
|
||||
|
||||
2019-07-21 Markus Gans <guru.mail@muenster.de>
|
||||
* Reduce include entries in the header files
|
||||
|
||||
2019-07-14 Markus Gans <guru.mail@muenster.de>
|
||||
* Reduces the use of raw loops
|
||||
* Add a unit test for FTermOpenBSD to test the OpenBSD
|
||||
and NetBSD console
|
||||
|
||||
2019-06-30 Markus Gans <guru.mail@muenster.de>
|
||||
* Expanding the unit test for FTermLinux
|
||||
* Update the cp437 unicode map
|
||||
* Reducing the special cases for Solaris
|
||||
|
||||
2019-06-19 Markus Gans <guru.mail@muenster.de>
|
||||
* Add a unit test for FTermLinux with a Linux console emulation
|
||||
and a dedicated FSystem test instance
|
||||
|
||||
2019-06-12 Markus Gans <guru.mail@muenster.de>
|
||||
* Fixes problem with scroll bar view after first draw
|
||||
|
||||
2019-06-02 Markus Gans <guru.mail@muenster.de>
|
||||
* Avoid drawing the scroll bars if the widget is non-visible
|
||||
|
||||
2019-05-27 Markus Gans <guru.mail@muenster.de>
|
||||
* Use the Singleton design pattern to get a single object instance
|
||||
via FTerm
|
||||
|
||||
2019-05-26 Marek Habersack <grendel@twistedcode.net>
|
||||
* Fix a segfault when processing input to empty FListView
|
||||
|
||||
2019-05-17 Markus Gans <guru.mail@muenster.de>
|
||||
* Move system calls to the new class FSystem
|
||||
|
||||
2019-04-27 Markus Gans <guru.mail@muenster.de>
|
||||
* Add the reserve() method to FListBox to increase the capacity
|
||||
of the list
|
||||
* Use shrink_to_fit() to save memory space
|
||||
|
||||
2019-03-24 Markus Gans <guru.mail@muenster.de>
|
||||
* Add a "scroll view" chapter to the first steps document
|
||||
|
||||
2019-02-28 Markus Gans <guru.mail@muenster.de>
|
||||
* Add an lambda expression callback example to the first steps document
|
||||
|
||||
2019-02-24 Markus Gans <guru.mail@muenster.de>
|
||||
* FLineEdit now has the ability to define a character input filter
|
||||
via regular expression (regex)
|
||||
* Now FLineEdit can define a maximum character length for the input
|
||||
* The cursor position can now be set directly in FLineEdit
|
||||
* Added the 7-segment example to demonstrate the use of FTermBuffer
|
||||
and FLineEdit input filters
|
||||
|
||||
2019-02-07 Markus Gans <guru.mail@muenster.de>
|
||||
* Add a "dynamic layout" chapter into the first steps document
|
||||
|
||||
2019-01-30 Markus Gans <guru.mail@muenster.de>
|
||||
* Printing an FColorPair object can change the foreground and
|
||||
background color
|
||||
|
||||
2019-01-27 Markus Gans <guru.mail@muenster.de>
|
||||
* The print command can now have an FPoint object as a parameter
|
||||
to set the cursor position
|
||||
* Refactoring of the FProgressbar drawing methods
|
||||
|
||||
2019-01-24 Markus Gans <guru.mail@muenster.de>
|
||||
* Refactoring of some methods in FVTerm and FDialog
|
||||
|
||||
2019-01-21 Markus Gans <guru.mail@muenster.de>
|
||||
* More accurate interfaces through the strict use of FPoint()
|
||||
and FSize()
|
||||
|
||||
2019-01-16 Markus Gans <guru.mail@muenster.de>
|
||||
* New class FSize for storing dimensions
|
||||
|
||||
2019-01-12 Markus Gans <guru.mail@muenster.de>
|
||||
* Refactoring FFileDialog::fileOpenChooser
|
||||
* Refactoring FFileDialog::fileSaveChooser
|
||||
* Refactoring FListBox::init()
|
||||
* Refactoring FListView::init()
|
||||
* Refactoring FTextView::init()
|
||||
* Refactoring FTermXTerminal::resetXTermForeground()
|
||||
* Refactoring FTermXTerminal::resetXTermBackground()
|
||||
* Refactoring FTermXTerminal::resetXTermCursorColor()
|
||||
* Refactoring FTermXTerminal::resetXTermMouseForeground()
|
||||
* Refactoring FTermXTerminal::resetXTermMouseBackground()
|
||||
* Refactoring FTermXTerminal::resetXTermHighlightBackground()
|
||||
|
||||
2019-01-11 Markus Gans <guru.mail@muenster.de>
|
||||
* Generalize hide() method
|
||||
|
||||
2019-01-09 Markus Gans <guru.mail@muenster.de>
|
||||
* Improvement in widget focusing
|
||||
* Better widget visibility handling with the methods hide() and show()
|
||||
|
||||
2019-01-05 Markus Gans <guru.mail@muenster.de>
|
||||
* Use of initializer_list for FListBox, FListView and FTextView
|
||||
|
||||
2019-01-04 Markus Gans <guru.mail@muenster.de>
|
||||
* Use the final specifier
|
||||
|
||||
2019-01-03 Markus Gans <guru.mail@muenster.de>
|
||||
* Improved PC encoding for Cygwin and Linux
|
||||
* Integration of an output filter to replace missing characters
|
||||
* Better Linux console support for UTF-8 encoding
|
||||
(Default is PC charset encoding)
|
||||
* Better background color for all terminals with a fixed color palette
|
||||
|
||||
2018-12-31 Markus Gans <guru.mail@muenster.de>
|
||||
* Use the override specifier
|
||||
|
||||
2018-12-30 Markus Gans <guru.mail@muenster.de>
|
||||
* Cygwin compiled fix for C++11
|
||||
|
||||
2018-12-29 Markus Gans <guru.mail@muenster.de>
|
||||
* Text scrolling in FTextView was broken since February 17th!
|
||||
* Replace redundant FString code with templates
|
||||
|
||||
2018-12-28 Markus Gans <guru.mail@muenster.de>
|
||||
* Add the assignment operator (=) for FButton to set the button text
|
||||
* Corrected shortening of overlong texts in the title bar of FDialog
|
||||
* Add a "signals and callbacks" chapter into the first steps document
|
||||
|
||||
2018-12-25 Markus Gans <guru.mail@muenster.de>
|
||||
* Add a "event processing" chapter into the first steps document
|
||||
|
||||
2018-12-24 Markus Gans <guru.mail@muenster.de>
|
||||
* Events can not only be sent to FWidgets, but also to FObjects
|
||||
* New event FUserEvent for user-defined events
|
||||
|
||||
2018-12-19 Markus Gans <guru.mail@muenster.de>
|
||||
* Use of smart pointers
|
||||
* Add a "memory management" chapter into the first steps document
|
||||
|
||||
2018-12-17 Markus Gans <guru.mail@muenster.de>
|
||||
* Improve FButton mouse click animation
|
||||
* Minor data type corrections
|
||||
* Reactivate the event queue
|
||||
|
||||
2018-12-15 Markus Gans <guru.mail@muenster.de>
|
||||
* Use of the C++11 auto specifier in the program code
|
||||
* Code reduction by using of range-based for loop
|
||||
* The example program for video attributes now replaces
|
||||
the switch statement with a vector of lambda expressions
|
||||
|
||||
2018-12-09 Markus Gans <guru.mail@muenster.de>
|
||||
* Better handling of the scroll bar maximum
|
||||
* Deactivate copy constructor and assignment operator with "= delete"
|
||||
* Use nullptr instead of 0 to initialize a pointer values
|
||||
|
||||
2018-12-06 Markus Gans <guru.mail@muenster.de>
|
||||
* Easier handling of fc::SpecialCharacter
|
||||
|
||||
2018-12-01 Markus Gans <guru.mail@muenster.de>
|
||||
* Improved wheel mouse support
|
||||
* Switched to the language standard C++11
|
||||
* Use delegated constructors and in-class default member initializers
|
||||
|
||||
2018-12-01 Markus Gans <guru.mail@muenster.de>
|
||||
* Improved gpm wheel mouse support
|
||||
* Fix compile in optimization level 2 for newer gcc
|
||||
|
||||
2018-11-27 Markus Gans <guru.mail@muenster.de>
|
||||
* Correct vertical scrollbar position after sorting in FListView
|
||||
* Correct vertical scroll bar position after sorting in FListView
|
||||
|
||||
2018-11-25 Markus Gans <guru.mail@muenster.de>
|
||||
* Version 0.5.0
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
# Contributing
|
||||
|
||||
Thank you for your interest in FINAL CUT!
|
||||
|
||||
We welcome contributions of all kinds, including patches to code and
|
||||
documentation, bug reports, or just neat feedback. If you ever think that
|
||||
something could be better or different, please give us feedback on it. Do
|
||||
you have problems with FINAL CUT, or are you looking for support in using
|
||||
the library in your project? Feel free to open a new issue if there is not
|
||||
already one on your topic. If you have problems with an application that
|
||||
uses FINAL CUT and have no idea of the cause, please contact the author
|
||||
first.
|
||||
|
||||
Github hosts the source code of FINAL CUT. You can make a local copy from
|
||||
the repository using git clone:
|
||||
|
||||
```bash
|
||||
> git clone git://github.com/gansm/finalcut.git
|
||||
```
|
||||
|
||||
|
||||
## Submitting patches
|
||||
|
||||
The FINAL CUT project accepts both
|
||||
[GitHub pull requests](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request)
|
||||
and patches that reach me via other channels. GitHub pull requests are
|
||||
preferred. Please follow our [coding style](doc/coding-style.txt) standard.
|
||||
|
||||
|
||||
### Explain your work
|
||||
|
||||
When submitting a patch, you should include a description of the problem
|
||||
you are trying to solve, how you solved it, and why you chose the solution
|
||||
you implemented. When you submit a bug fix, it is often helpful to include
|
||||
a reproducible description for the problem in your explanation. Important
|
||||
would be instructions on how to test the error and verify its elimination.
|
||||
|
||||
|
||||
### Test your code
|
||||
|
||||
Run the FINAL CUT unit tests if you have installed
|
||||
[CppUnit](https://freedesktop.org/wiki/Software/cppunit/).
|
||||
Proceed as follows:
|
||||
|
||||
The easy way
|
||||
|
||||
```bash
|
||||
> make distclean
|
||||
> ./build.sh unit-test
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```bash
|
||||
> make distclean
|
||||
> ./configure --prefix=/usr CXXFLAGS="-g -O0 -DDEBUG -DUNIT_TEST" --with-unit-test
|
||||
> make test
|
||||
```
|
||||
|
||||
If you have created uncovered code, I would be very grateful for
|
||||
complementary test code in the existing unit tests.
|
||||
|
||||
|
||||
## Issue Tracking
|
||||
|
||||
We currently use the
|
||||
[issue tracker on Github](https://github.com/gansm/finalcut/issues).
|
||||
|
||||
|
||||
## How to help
|
||||
|
||||
### What FINAL CUT needs
|
||||
|
||||
* We want your feedback, your opinion, your advice, and to hear what you
|
||||
think!
|
||||
* Help make FINAL CUT better known. Tell others about this project. A large
|
||||
user base also means a better and more stable codebase.
|
||||
* Help maintain and improve the library.
|
||||
* Write unit tests for untested code.
|
||||
|
||||
### What would be helpful
|
||||
|
||||
* **Improve documentation:** <br />
|
||||
Fix typos or grammar mistakes. Revise sections that need improvement or
|
||||
add missing sections.
|
||||
* **Translations into other languages:** <br />
|
||||
For many people, reading the documentary in their native language will
|
||||
certainly make getting started with FINAL CUT much easier and more
|
||||
attractive.
|
||||
* **Better tests:** <br />
|
||||
High code coverage gives us a stable base that prevents breaking code due
|
||||
to a small patch.
|
||||
* **Publication in repositories:** <br />
|
||||
Advocate for the inclusion of FINAL CUT in your preferred distribution.
|
||||
* **Support for other platforms:** <br />
|
||||
There are still platforms on which FINAL CUT is not yet executable.
|
||||
* **Do you like to help other people?** <br />
|
||||
Answer questions in open issues or help moderate discussion forums or
|
||||
other communication channels.
|
||||
|
||||
Please help us make the FINAL CUT widget toolkit the best library for
|
||||
text-based user interfaces.
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Makefile.am - The Final Cut terminal programming library
|
||||
# Makefile.am - FINAL CUT terminal programming library
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
@ -19,3 +19,7 @@ docdir = ${datadir}/doc/${PACKAGE}
|
|||
doc_DATA = AUTHORS COPYING COPYING.LESSER ChangeLog
|
||||
|
||||
test: check
|
||||
|
||||
uninstall-hook:
|
||||
if test -d ${docdir}; then rmdir ${docdir}; fi
|
||||
|
||||
|
|
305
README.md
|
@ -1,24 +1,26 @@
|
|||
![FINAL CUT](logo/svg/finalcut-logo.svg)
|
||||
============================================
|
||||
|
||||
### Building and code analysis
|
||||
*Latest release:*<br />
|
||||
     [![Latest Release](https://img.shields.io/github/release/gansm/finalcut.svg)](https://github.com/gansm/finalcut/releases) <br />
|
||||
*Travis CI:*<br />
|
||||
     [![Build Status](https://travis-ci.org/gansm/finalcut.svg?branch=master)](https://travis-ci.org/gansm/finalcut) <br />
|
||||
*Coverity Scan:*<br />
|
||||
     [![Coverity Scan Status](https://scan.coverity.com/projects/6508/badge.svg)](https://scan.coverity.com/projects/6508) <br />
|
||||
*LGTM:*<br />
|
||||
     [![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/gansm/finalcut.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/gansm/finalcut/context:cpp) <br />
|
||||
*Class Reference:*<br />
|
||||
     [![documented](https://codedocs.xyz/gansm/finalcut.svg)](https://codedocs.xyz/gansm/finalcut/hierarchy.html)
|
||||
# Library for creating terminal applications with text-based widgets
|
||||
|
||||
### Description
|
||||
The FINAL CUT is a C++ class library and widget toolkit with full mouse support for creating a [text-based user interface](https://en.wikipedia.org/wiki/Text-based_user_interface). The library supports the programmer to develop an application for the text console. It allows the simultaneous handling of multiple text windows on the screen.
|
||||
FINAL CUT is a C++ class library and widget toolkit with full [mouse](doc/mouse-control.md#title-bar-actions-on-mouse-clicks) support for creating a [text-based user interface](https://en.wikipedia.org/wiki/Text-based_user_interface). The library supports the programmer to develop an application for the text console. It allows the simultaneous handling of multiple text windows on the screen.
|
||||
|
||||
The structure of the Qt framework was originally the inspiration for the C++ class design of FINAL CUT. It provides common controls like dialog boxes, push buttons, check boxes, radio buttons, input lines, list boxes, status bars and so on.
|
||||
|
||||
### Installation
|
||||
## Building and code analysis
|
||||
|
||||
| | Badge |
|
||||
|-------------------:|:------|
|
||||
| *Latest release* | [![Latest Release](https://img.shields.io/github/release/gansm/finalcut.svg)](https://github.com/gansm/finalcut/releases) |
|
||||
| *License* | [![license](https://img.shields.io/github/license/gansm/finalcut.svg?colorA=#333)](COPYING) |
|
||||
| *Class Reference* | [![documented](https://codedocs.xyz/gansm/finalcut.svg)](https://codedocs.xyz/gansm/finalcut/hierarchy.html) |
|
||||
| *Travis CI* | [![Build Status](https://travis-ci.com/gansm/finalcut.svg?branch=main)](https://travis-ci.com/gansm/finalcut)
|
||||
| *Coverity Scan* | [![Coverity Scan Status](https://img.shields.io/coverity/scan/6508.svg)](https://scan.coverity.com/projects/6508 )|
|
||||
| *LGTM* | [![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/gansm/finalcut.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/gansm/finalcut/context:cpp) |
|
||||
| *SonarCloud* | [![Quality gate](https://sonarcloud.io/api/project_badges/measure?project=gansm_finalcut&metric=alert_status)](https://sonarcloud.io/dashboard?id=gansm_finalcut) |
|
||||
| *CodeFactor* | [![CodeFactor](https://www.codefactor.io/repository/github/gansm/finalcut/badge)](https://www.codefactor.io/repository/github/gansm/finalcut) |
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
> git clone git://github.com/gansm/finalcut.git
|
||||
> cd finalcut
|
||||
|
@ -28,7 +30,8 @@ The structure of the Qt framework was originally the inspiration for the C++ cla
|
|||
> su -c "make install"
|
||||
```
|
||||
|
||||
### Supported platforms
|
||||
## Supported platforms
|
||||
|
||||
* Linux
|
||||
* FreeBSD
|
||||
* NetBSD
|
||||
|
@ -37,186 +40,191 @@ The structure of the Qt framework was originally the inspiration for the C++ cla
|
|||
* Cygwin
|
||||
* Solaris
|
||||
|
||||
### First steps
|
||||
## First steps
|
||||
|
||||
[How to use the library](doc/first-steps.md#first-steps-with-the-final-cut-widget-toolkit)
|
||||
See the [first steps](doc/first-steps.md#first-steps-with-the-final-cut-widget-toolkit) documentation for information on how to use the library.
|
||||
|
||||
### Screenshots
|
||||
## Some screenshots
|
||||
|
||||
The FFileDialog widget:
|
||||
The FFileDialog widget with incremental file name search:
|
||||
|
||||
![FFileDialog](doc/fileopen-dialog.png)
|
||||
|
||||
|
||||
The Final Cut FProgressbar widget:
|
||||
The FINAL CUT FProgressbar widget:
|
||||
|
||||
![FProgressbar](doc/progress-bar.png)
|
||||
|
||||
|
||||
Scrollable text in the FTextView widget:
|
||||
|
||||
![FTextView](doc/textview.png)
|
||||
|
||||
![FTextView](doc/textview.png)
|
||||
|
||||
The Mandelbrot set example:
|
||||
|
||||
![Mandelbrot set](doc/Mandelbrot.png)
|
||||
![Mandelbrot set](doc/Mandelbrot.png)
|
||||
|
||||
## newfont
|
||||
|
||||
newfont
|
||||
-------
|
||||
A [graphical text font](fonts/) for X11 and the Linux console.
|
||||
|
||||
![ui example in newfont mode](doc/newfont1.png)
|
||||
|
||||
|
||||
Newfont drive symbols:
|
||||
|
||||
![drive symbols](doc/newfont2.png)
|
||||
|
||||
|
||||
The calculator example in newfont mode:
|
||||
|
||||
![calculator](doc/calculator.png)
|
||||
|
||||
## Benchmark
|
||||
|
||||
Virtual terminal
|
||||
----------------
|
||||
It uses a virtual terminal to print the character via an update method on the screen.
|
||||
The virtual windows are an overlying layer to realizing window movements.
|
||||
The update method transmits only the changes to the virtual terminal or the screen.
|
||||
Here you can find a test for [measuring the character speed](doc/benchmark.md#benchmark) in the terminal.
|
||||
|
||||
## Virtual terminal
|
||||
|
||||
FINAL CUT uses a virtual terminal to print character via an update method on the screen. It provides (as an overlying layer) virtual windows for the realization of window movements. The update methods only transfer differences to the virtual terminal or physical screen.
|
||||
|
||||
<pre style="line-height: 1 !important;">
|
||||
print(...)
|
||||
printf(...)
|
||||
│
|
||||
│ ╔═════════════════════════[ vterm ]═════════════════════════╗
|
||||
│ ║createVTerm() ║
|
||||
│ ║ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ║
|
||||
│ ║ ║
|
||||
│ ║ │ restoreVTerm(x,y,w,h) │ ║
|
||||
│ ║ ║
|
||||
│ ║ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘ ║
|
||||
│ ║ ║
|
||||
│ ┌───────╨─────[ vwin ]─────────────┐ ║
|
||||
│ │createArea(area) │ ║
|
||||
│ │ │ ║
|
||||
│ │ │ ║
|
||||
└───┼─────────────► ──────► updateVTerm(area) ────► ║
|
||||
│ │ ║
|
||||
│ putArea(x,y,area) ║
|
||||
│ ────────────────────► ║
|
||||
│ getArea(x,y,area) ║
|
||||
│ ◄──────────────────── ║
|
||||
│ │ ║
|
||||
│ │ ║
|
||||
│ resizeArea(area)│ ║
|
||||
└───────╥──────────────────────────┘ ║
|
||||
║ ║
|
||||
║ ║
|
||||
║ ║
|
||||
║ │ resizeVTerm()║
|
||||
╚═══▼═══════════════════════════════════════════════════════╝
|
||||
│
|
||||
│ putVTerm()
|
||||
└──────────────────► updateTerminalLine(y)
|
||||
updateTerminal() │
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ output_buffer │
|
||||
└───────────────┘
|
||||
│
|
||||
│ flush_out()
|
||||
│ +
|
||||
│ Fputchar(char)
|
||||
│
|
||||
▼
|
||||
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
||||
▌ ▐
|
||||
▌ screen ▐
|
||||
▌ ───────────── ▐
|
||||
▌ real terminal ▐
|
||||
▌ ▐
|
||||
▀▀▀▀▀▀▀███▀▀▀▀▀▀▀
|
||||
███
|
||||
▀▀▀▀▀▀▀▀▀
|
||||
│ ╔════════════════════════[ vterm ]════════════════════════╗
|
||||
│ ║createVTerm() ║
|
||||
│ ║ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ║
|
||||
│ ║ ║
|
||||
│ ║ │ restoreVTerm(x,y,w,h) │ ║
|
||||
│ ┌───────╨────[ vwin ]────────────┐ ║
|
||||
│ │createArea(area) │ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘ ║
|
||||
│ │ │ ║
|
||||
│ │ │ ║
|
||||
└──┼────────► putArea(area) ────► ║
|
||||
│ │ ║
|
||||
│ putArea(x,y,area) ────► ║
|
||||
│ │ ║
|
||||
│ ◄──── getArea(x,y,area) ║
|
||||
│ │ ║
|
||||
│ │ ║
|
||||
│ │ ║
|
||||
│ resizeArea(area)│ ║
|
||||
└───────╥────────────────────────┘ ║
|
||||
║ ║
|
||||
║ │ resizeVTerm()║
|
||||
╚═══════▼═════════════════════════════════════════════════╝
|
||||
│
|
||||
│ putVTerm()
|
||||
└──────────────────► updateTerminalLine(y)
|
||||
updateTerminal() │
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ output_buffer │
|
||||
└───────────────┘
|
||||
│
|
||||
│ flushOutputBuffer()
|
||||
│ and putchar(char)
|
||||
▼
|
||||
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
||||
▌ ▐
|
||||
▌ screen ▐
|
||||
▌ ───────────── ▐
|
||||
▌ real terminal ▐
|
||||
▌ ▐
|
||||
▀▀▀▀▀▀▀███▀▀▀▀▀▀▀
|
||||
███
|
||||
▀▀▀▀▀▀▀▀▀
|
||||
</pre>
|
||||
|
||||
|
||||
Class digramm
|
||||
-------------
|
||||
## Class digramm
|
||||
|
||||
<pre style="line-height: 1 !important;">
|
||||
1┌──────────────┐
|
||||
1┌────────────┐
|
||||
┌-----------┤ FTermLinux │
|
||||
: └────────────┘
|
||||
: 1┌──────────────┐
|
||||
┌-----------┤ FTermFreeBSD │
|
||||
: └──────────────┘
|
||||
: 1┌──────────────┐ ┌───────────┐
|
||||
┌-----------┤ FTermOpenBSD │ ┌────┤ FKeyEvent │
|
||||
: └──────────────┘ │ └───────────┘
|
||||
: 1┌──────────────┐
|
||||
┌-----------┤ FTermOpenBSD │
|
||||
: └──────────────┘
|
||||
: 1┌────────────────┐ ┌───────────┐
|
||||
┌-----------┤ FTermDetection │ ┌────┤ FKeyEvent │
|
||||
: └────────────────┘ │ └───────────┘
|
||||
: 1┌────────────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermDetection │ ├────┤ FMouseEvent │
|
||||
┌-----------┤ FTermcapQuirks │ ├────┤ FMouseEvent │
|
||||
: └────────────────┘ │ └─────────────┘
|
||||
: 1┌────────────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermcapQuirks │ ├────┤ FWheelEvent │
|
||||
: └────────────────┘ │ └─────────────┘
|
||||
: 1┌────────────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermXTerminal │ ├────┤ FFocusEvent │
|
||||
┌-----------┤ FTermXTerminal │ ├────┤ FWheelEvent │
|
||||
: └────────────────┘ │ └─────────────┘
|
||||
: 1┌──────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermcap │ ├────┤ FAccelEvent │
|
||||
┌-----------┤ FTermcap │ ├────┤ FFocusEvent │
|
||||
: └──────────┘ │ └─────────────┘
|
||||
: 1┌──────────┐ │ ┌──────────────┐
|
||||
┌-----------┤ FTermios │ ├────┤ FResizeEvent │
|
||||
: └──────────┘ │ └──────────────┘
|
||||
: 1┌───────────────┐ │ ┌────────────┐
|
||||
┌-----------┤ FColorPalette │ ├────┤ FShowEvent │
|
||||
: └───────────────┘ │ └────────────┘
|
||||
: 1┌──────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermios │ ├────┤ FAccelEvent │
|
||||
: └──────────┘ │ └─────────────┘
|
||||
: 1┌───────────────┐ │ ┌──────────────┐
|
||||
┌-----------┤ FColorPalette │ ├────┤ FResizeEvent │
|
||||
: └───────────────┘ │ └──────────────┘
|
||||
: 1┌───────────┐ │ ┌────────────┐
|
||||
┌-----------┤ FOptiMove │ ├────┤ FHideEvent │
|
||||
┌-----------┤ FOptiMove │ ├────┤ FShowEvent │
|
||||
: └───────────┘ │ └────────────┘
|
||||
: 1┌───────────┐ │ ┌────────────┐
|
||||
┌-----------┤ FOptiAttr │ ├────┤ FHideEvent │
|
||||
: └───────────┘ │ └────────────┘
|
||||
: 1┌───────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FOptiAttr │ ├────┤ FCloseEvent │
|
||||
┌-----------┤ FKeyboard │ ├────┤ FCloseEvent │
|
||||
: └───────────┘ │ └─────────────┘
|
||||
: 1┌───────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FKeyboard │ ├────┤ FTimerEvent │
|
||||
: └───────────┘ │ └─────────────┘
|
||||
: 1┌───────────────┐ │
|
||||
┌-----------┤ FMouseControl │ │ ┌──────────────┐
|
||||
: └───────────────┘ │ ┌────┤ FApplication │
|
||||
: *┌─────────┐ │ │ └──────────────┘
|
||||
: ┌--------┤ FString │ │ │ ┌─────────┐
|
||||
: : └─────────┘ │ ├────┤ FButton │
|
||||
: : *┌────────┐ │ │ └─────────┘
|
||||
: 1┌───────────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FMouseControl │ ├────┤ FTimerEvent │
|
||||
: └───────────────┘ │ └─────────────┘
|
||||
: 1┌─────────┐ │ ┌────────────┐1 1┌───────┐
|
||||
┌-----------┤ FSystem │ ├────┤ FUserEvent ├------┤ FData │
|
||||
: └─────────┘ │ └────────────┘ └───────┘
|
||||
: *┌─────────┐ │ ┌──────┐ ┌─────────┐
|
||||
: ┌--------┤ FString │ │ │ FLog │◄──┤ FLogger │
|
||||
: : └─────────┘ │ └──┬───┘ └─────────┘
|
||||
: : *┌───────────────┐ │ :1
|
||||
: ┌--------┤ FStringStream │ │ ┌──┴───────────┐
|
||||
: : └───────────────┘ │ ┌────┤ FApplication │
|
||||
: : *┌────────┐ │ │ └──────────────┘
|
||||
: ┌--------┤ FPoint │ │ │ ┌────────┐
|
||||
: : └────────┘ │ ├────┤ FLabel │
|
||||
: : *┌───────┐ │ │ └────────┘
|
||||
: ┌--------┤ FRect │ │ │ ┌───────────┐
|
||||
: : └───────┘ │ ├────┤ FLineEdit │
|
||||
:1 :1 │ │ └───────────┘
|
||||
┌─┴──┴──┐ │ │ ┌──────────────┐ ┌──────────────┐
|
||||
│ FTerm │ │ ├────┤ FButtonGroup │ ┌──┤ FRadioButton │
|
||||
└───┬───┘ ┌────────┐ │ │ └──────────────┘ │ └──────────────┘
|
||||
:1 │ FEvent │◄─────┘ │ ┌───────────────┐ │ ┌───────────┐
|
||||
┌───┴────┐ └────┬───┘ ├────┤ FToggleButton │◄─┼──┤ FCheckBox │
|
||||
│ FVTerm │◄──┐ :1 │ └───────────────┘ │ └───────────┘
|
||||
└────────┘ │ ┌────┴────┐ │ ┌──────────────┐ │ ┌─────────┐
|
||||
├────┤ FWidget │◄───────┼────┤ FProgressbar │ └──┤ FSwitch │
|
||||
┌─────────┐ │ └─────────┘ │ └──────────────┘ └─────────┘
|
||||
│ FObject │◄──┘ │ ┌────────────┐
|
||||
└─────────┘ ├────┤ FScrollbar │
|
||||
: : *┌───────┐ │ │ └───────────┘
|
||||
: ┌--------┤ FSize │ │ │ ┌──────────┐
|
||||
: : └───────┘ │ ├────┤ FSpinBox │
|
||||
:1 :1 │ │ └──────────┘
|
||||
┌─┴──┴──┐ │ │ ┌─────────┐
|
||||
│ FTerm │ │ ├────┤ FButton │
|
||||
└───┬───┘ ┌────────┐ │ │ └─────────┘
|
||||
:1 │ FEvent │◄─────┘ │ ┌──────────────┐ ┌──────────────┐
|
||||
┌───┴────┐ └────┬───┘ ├────┤ FButtonGroup │ ┌──┤ FRadioButton │
|
||||
│ FVTerm │◄──┐ :1 │ └──────────────┘ │ └──────────────┘
|
||||
└────────┘ │ ┌────┴────┐ │ ┌───────────────┐ │ ┌───────────┐
|
||||
├────┤ FWidget │◄───────┼────┤ FToggleButton │◄─┼──┤ FCheckBox │
|
||||
┌─────────┐ │ └────┬────┘ │ └───────────────┘ │ └───────────┘
|
||||
│ FObject │◄──┘ :1 │ ┌──────────────┐ │ ┌─────────┐
|
||||
└─────────┘ ┌──────┴────────┐ ├────┤ FProgressbar │ └──┤ FSwitch │
|
||||
│ FWidgetColors │ │ └──────────────┘ └─────────┘
|
||||
└───────────────┘ │ ┌────────────┐
|
||||
├────┤ FScrollbar │
|
||||
│ └────────────┘
|
||||
│ ┌───────────┐
|
||||
├────┤ FTextView │
|
||||
│ └───────────┘
|
||||
│ ┌──────────┐1 *┌──────────────┐
|
||||
├────┤ FListBox ├-------┤ FListBoxItem │
|
||||
│ └──────────┘ └──────────────┘
|
||||
┌─────────────┐1 │ 1┌───────────┐1 *┌───────────────┐
|
||||
│ FTermBuffer ├----------------------├────┤ FListView ├------┤ FListViewItem │
|
||||
└─────────────┘ │ └───────────┘ └───────────────┘
|
||||
│ ┌─────────────┐
|
||||
├────┤ FScrollView │
|
||||
│ └─────────────┘
|
||||
│ ┌───────────┐1 1┌──────────────────┐
|
||||
├────┤ FComboBox ├------┤ FDropDownListBox │
|
||||
│ └───────────┘ └──────────────────┘
|
||||
┌─────────────┐1 │ ┌──────────┐1 *┌──────────────┐1
|
||||
│ FTermBuffer ├----------------------├────┤ FListBox ├-------┤ FListBoxItem ├--┐
|
||||
└─────────────┘ │ └──────────┘ └──────────────┘ :
|
||||
│ 1┌───────────┐1 *┌───────────────┐ :
|
||||
├────┤ FListView ├------┤ FListViewItem │ :
|
||||
│ └───────────┘ └────────┬──────┘ :
|
||||
│ ┌─────────────┐ :1 :
|
||||
├────┤ FScrollView │ ┌───┴───┐1 :
|
||||
│ └─────────────┘ │ FData ├----┘
|
||||
│ └───────┘
|
||||
│ ┌────────────┐1 *┌────────────┐
|
||||
│ ┌──┤ FStatusBar ├-----┤ FStatusKey │
|
||||
│ │ └────────────┘ └────────────┘
|
||||
|
@ -227,9 +235,9 @@ Class digramm
|
|||
└──┬──┬───┘ └─────────┘ │ ┌─────────────┐
|
||||
▲ ▲ └──┤ FMessageBox │
|
||||
│ │ └─────────────┘
|
||||
│ │ ┌──────────┐
|
||||
│ └──────┤ FToolTip │
|
||||
│ └──────────┘
|
||||
│ │ ┌──────────┐ ┌────────────────┐
|
||||
│ └──────┤ FToolTip │◄─┤ FBusyIndicator │
|
||||
│ └──────────┘ └────────────────┘
|
||||
└───────────────┐ ┌──────────┐
|
||||
│ ┌───┤ FMenuBar │
|
||||
┌───────────┐ └──────┤ └──────────┘
|
||||
|
@ -248,17 +256,14 @@ Class digramm
|
|||
└────────────────┘
|
||||
</pre>
|
||||
|
||||
License
|
||||
-------
|
||||
GNU Lesser General Public License Version 3
|
||||
## Frequently Asked Questions
|
||||
|
||||
Frequently Asked Questions
|
||||
--------------------------
|
||||
If you have any problems, please read the
|
||||
[FAQ](doc/faq.md#frequently-asked-questions)
|
||||
before you give up.
|
||||
For general questions about FINAL CUT, likely the answer is already included in the [FAQ](doc/faq.md#frequently-asked-questions).
|
||||
|
||||
## Please send bug reports to
|
||||
|
||||
Please send bug reports to
|
||||
--------------------------
|
||||
https://github.com/gansm/finalcut/issues
|
||||
|
||||
## License
|
||||
|
||||
GNU Lesser General Public License Version 3 <a href="https://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img width="200" align="right" src="https://camo.githubusercontent.com/726b87cc2ebaf8c40716842ff509c5f874381c8e/68747470733a2f2f75706c6f61642e77696b696d656469612e6f72672f77696b6970656469612f636f6d6d6f6e732f332f33622f4c47504c76335f4c6f676f2e737667" alt="LGPLv3" data-canonical-src="https://upload.wikimedia.org/wikipedia/commons/3/3b/LGPLv3_Logo.svg"></a>
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
# Security policy
|
||||
|
||||
## Dealing with security vulnerabilities
|
||||
|
||||
There is no separate process for handling security vulnerabilities in FINAL CUT. Security vulnerabilities are fixed and published like all other bugs. Nevertheless, from the moment they are brought to our attention, we try to close them as soon as possible.
|
||||
|
||||
## Reporting a security vulnerability
|
||||
|
||||
Preferably report a vulnerability via email to "guru.mail" + "@" + "muenster.de" or open an issue in the GitHub repository, the latter meaning that you made the vulnerability public before it was fixed.
|
||||
|
||||
If you already have a solution for the security problem, please submit a pull request.
|
||||
|
25
build.sh
|
@ -35,7 +35,7 @@ then
|
|||
autoreconf --install --force
|
||||
else
|
||||
echo "Build failed, please install autoconf first"
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
@ -43,10 +43,10 @@ fi
|
|||
# Build commands
|
||||
case "$1" in
|
||||
"--release"|"release")
|
||||
if ! ./configure --prefix="$PREFIX" CXXFLAGS="-O2" # "-O3 -fno-rtti"
|
||||
if ! ./configure --prefix="$PREFIX" CXXFLAGS="-O3" # "-flto -fno-rtti"
|
||||
then
|
||||
echo "${RED}Configure failed!${NORMAL}" 1>&2
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
;;
|
||||
|
||||
|
@ -54,15 +54,15 @@ case "$1" in
|
|||
if ! ./configure --prefix="$PREFIX" CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG -W -Wall -pedantic"
|
||||
then
|
||||
echo "${RED}Configure failed!${NORMAL}" 1>&2
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
;;
|
||||
|
||||
"--fulldebug"|"fulldebug")
|
||||
if ! ./configure --prefix="$PREFIX" CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG -W -Wall -Weffc++ -pedantic -pedantic-errors -Wextra -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wimport -Winit-self -Winvalid-pch -Wlong-long -Wmissing-braces -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-noreturn -Wpacked -Wpadded -Wparentheses -Wpointer-arith -Wredundant-decls -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -fstack-protector -Wstrict-aliasing -Wstrict-aliasing=3 -Wswitch -Wswitch-enum -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunreachable-code -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wvariadic-macros -Wvolatile-register-var -Wwrite-strings -Wsign-promo -Woverloaded-virtual -Wstrict-null-sentinel -fext-numeric-literals -Wreorder -Wnoexcept -Wnarrowing -Wliteral-suffix -Wctor-dtor-privacy"
|
||||
if ! ./configure --prefix="$PREFIX" CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG -W -Wall -Weffc++ -pedantic -pedantic-errors -Wextra -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wimport -Winit-self -Winvalid-pch -Wlong-long -Wmissing-braces -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-noreturn -Wpacked -Wparentheses -Wpointer-arith -Wredundant-decls -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -fstack-protector -Wstrict-aliasing -Wstrict-aliasing=3 -Wswitch -Wswitch-enum -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunreachable-code -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wvariadic-macros -Wvolatile-register-var -Wwrite-strings -Wsign-promo -Woverloaded-virtual -Wstrict-null-sentinel -fext-numeric-literals -Wreorder -Wnoexcept -Wnarrowing -Wliteral-suffix -Wctor-dtor-privacy -ftree-loop-distribute-patterns -Wmemset-transposed-args -Wno-format-nonliteral"
|
||||
then
|
||||
echo "${RED}Configure failed!${NORMAL}" 1>&2
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
;;
|
||||
|
||||
|
@ -70,7 +70,7 @@ case "$1" in
|
|||
if ! ./configure --prefix="$PREFIX" CPPFLAGS="-DDEBUG" CXXFLAGS="-g -pg -O0 -DDEBUG -W -Wall -pedantic"
|
||||
then
|
||||
echo "${RED}Configure failed!${NORMAL}" 1>&2
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
;;
|
||||
|
||||
|
@ -78,23 +78,23 @@ case "$1" in
|
|||
if ! ./configure --prefix="$PREFIX" --with-profiler
|
||||
then
|
||||
echo "${RED}Configure failed!${NORMAL}" 1>&2
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
;;
|
||||
|
||||
"--unit-test"|"unit-test")
|
||||
if ! ./configure --prefix="$PREFIX" CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG" --with-unit-test
|
||||
if ! ./configure --prefix="$PREFIX" CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG -DUNIT_TEST" --with-unit-test
|
||||
then
|
||||
echo "${RED}Configure failed!${NORMAL}" 1>&2
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
;;
|
||||
|
||||
"--coverage"|"coverage")
|
||||
if ! ./configure --prefix="$PREFIX" CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG" --with-unit-test --with-gcov
|
||||
if ! ./configure --prefix="$PREFIX" CPPFLAGS="-DDEBUG" CXXFLAGS="-g -O0 -DDEBUG -DUNIT_TEST" --with-unit-test --with-gcov
|
||||
then
|
||||
echo "${RED}Configure failed!${NORMAL}" 1>&2
|
||||
exit -1
|
||||
exit 255
|
||||
fi
|
||||
;;
|
||||
|
||||
|
@ -139,6 +139,7 @@ if [ "$1" = "--unit-test" ] \
|
|||
|| [ "$1" = "--coverage" ] \
|
||||
|| [ "$1" = "coverage" ]
|
||||
then
|
||||
rm test/*.log 2>/dev/null
|
||||
cd test && make check-TESTS
|
||||
cat ./*.log 2>/dev/null
|
||||
cd .. || exit
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
coverage:
|
||||
status:
|
||||
project: on
|
||||
patch: off
|
||||
|
42
configure.ac
|
@ -1,10 +1,10 @@
|
|||
#----------------------------------------------------------------------
|
||||
# configure.ac - the Final Cut library
|
||||
# configure.ac - FINAL CUT library
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT([finalcut], [0.5.1])
|
||||
AC_INIT([finalcut], [0.7.2])
|
||||
AC_CONFIG_HEADER([config.h])
|
||||
AX_PREFIX_CONFIG_H([src/include/final/fconfig.h], [F])
|
||||
AC_CONFIG_SRCDIR([src/fobject.cpp])
|
||||
|
@ -13,6 +13,9 @@ AM_INIT_AUTOMAKE
|
|||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
|
||||
m4_pattern_forbid([^AX_CHECK_COMPILE_FLAG\b],
|
||||
[Macro AX_CHECK_COMPILE_FLAG not found. Please install GNU autoconf-archive])
|
||||
|
||||
# Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS( \
|
||||
|
@ -46,13 +49,14 @@ AC_CHECK_FUNCS( \
|
|||
vsnprintf )
|
||||
|
||||
# Checks for 'tgetent'
|
||||
AC_SEARCH_LIBS([tgetent], [termcap tinfo curses ncurses])
|
||||
AC_SEARCH_LIBS([tgetent], [terminfo mytinfo termlib termcap tinfo ncurses curses])
|
||||
# Checks for 'tparm'
|
||||
AC_SEARCH_LIBS([tparm], [termcap tinfo curses ncurses])
|
||||
AC_SEARCH_LIBS([tparm], [terminfo mytinfo termlib termcap tinfo ncurses curses])
|
||||
|
||||
# Checks for libtool
|
||||
AC_ENABLE_SHARED
|
||||
AC_ENABLE_STATIC
|
||||
AC_LANG([C++])
|
||||
LT_INIT([dlopen])
|
||||
LT_LANG([C++])
|
||||
LT_OUTPUT
|
||||
|
@ -60,7 +64,7 @@ LT_OUTPUT
|
|||
### This defines the version number of the installed .so files
|
||||
### Update this value for every release! (A:B:C will map to foo.so.(A-C).C.B)
|
||||
### using libtool's versioning system.
|
||||
AC_SUBST(SO_VERSION, ["5:1:5"])
|
||||
AC_SUBST(SO_VERSION, ["7:2:7"])
|
||||
|
||||
AC_SUBST([LIBTOOL_DEPS])
|
||||
|
||||
|
@ -75,15 +79,19 @@ AC_CONFIG_FILES([Makefile
|
|||
finalcut.spec
|
||||
finalcut.pc])
|
||||
|
||||
# Check for C++11 support
|
||||
AX_CHECK_COMPILE_FLAG([[-std=c++11]],,
|
||||
[AC_MSG_ERROR([compiler did not accept -std=c++11])])
|
||||
|
||||
# use GPM (General Purpose Mouse)
|
||||
AC_ARG_WITH([gpm],
|
||||
[AS_HELP_STRING([--without-gpm], [Disable GPM mouse support])],
|
||||
[with_gpm=no],
|
||||
[],
|
||||
[with_gpm=yes])
|
||||
if test "x$with_gpm" = "xyes"
|
||||
if test "x$with_gpm" != "xno"
|
||||
then
|
||||
AC_CHECK_LIB([gpm],
|
||||
[main],
|
||||
[Gpm_Open],
|
||||
[AC_DEFINE([HAVE_LIBGPM], 1, [Define to 1 if GPM mouse is enabled])
|
||||
LIBS="$LIBS -lgpm"])
|
||||
fi
|
||||
|
@ -91,9 +99,9 @@ fi
|
|||
# profiling
|
||||
AC_ARG_WITH([profiler],
|
||||
[AS_HELP_STRING([--with-profiler], [build extra google profiler binaries])],
|
||||
[with_profiler=yes],
|
||||
[],
|
||||
[with_profiler=no])
|
||||
if test "x$with_profiler" = "xyes"
|
||||
if test "x$with_profiler" != "xno"
|
||||
then
|
||||
AC_CHECK_LIB([profiler],
|
||||
[ProfilerFlush],
|
||||
|
@ -103,26 +111,24 @@ fi
|
|||
# unit test
|
||||
AC_ARG_WITH([unit-test],
|
||||
[AS_HELP_STRING([--with-unit-test], [build unit tests])],
|
||||
[with_unit_test=yes],
|
||||
[],
|
||||
[with_unit_test=no])
|
||||
if test "x$with_unit_test" = "xyes"
|
||||
if test "x$with_unit_test" != "xno"
|
||||
then
|
||||
AC_MSG_NOTICE(enabled cppunit test)
|
||||
AM_PATH_CPPUNIT([1.12.0],
|
||||
[],
|
||||
[AC_MSG_ERROR([*** CppUnit not found! ***])])
|
||||
PKG_CHECK_MODULES(CPPUNIT,
|
||||
[cppunit > 1.12.0])
|
||||
AM_CONDITIONAL(CPPUNIT_TEST, [test "1" = "1"])
|
||||
else
|
||||
AM_CONDITIONAL(CPPUNIT_TEST, [test "1" = "0"])
|
||||
fi
|
||||
|
||||
|
||||
# code coverage
|
||||
AC_ARG_WITH([gcov],
|
||||
[AS_HELP_STRING([--with-gcov], [build for code coverage testing])],
|
||||
[with_gcov=yes],
|
||||
[],
|
||||
[with_gcov=no])
|
||||
if test "x$with_gcov" = "xyes"
|
||||
if test "x$with_gcov" != "xno"
|
||||
then
|
||||
AC_CHECK_LIB([gcov],
|
||||
[main],
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
finalcut (0.7.1) unstable; urgency=low
|
||||
|
||||
* Release (version 0.7.1)
|
||||
|
||||
-- Markus Gans <guru.mail@muenster.de> Sat, 14 Nov 2020 20:07:39 +0100
|
||||
|
||||
finalcut (0.7.0) unstable; urgency=low
|
||||
|
||||
* Release (version 0.7.0)
|
||||
|
||||
-- Markus Gans <guru.mail@muenster.de> Sat, 07 Nov 2020 11:24:39 +0100
|
||||
|
||||
finalcut (0.6.0) unstable; urgency=low
|
||||
|
||||
* Release (version 0.6.0)
|
||||
|
||||
-- Markus Gans <guru.mail@muenster.de> Mon, 14 Oct 2019 01:49:57 +0100
|
||||
|
||||
finalcut (0.5.0) unstable; urgency=low
|
||||
|
||||
* Release (version 0.5.0)
|
||||
|
|
|
@ -19,18 +19,15 @@ Architecture: any
|
|||
Pre-Depends: ${misc:Pre-Depends}
|
||||
Multi-Arch: same
|
||||
Depends:
|
||||
${shlibs:Depends}
|
||||
, ${shlibs:Depends}
|
||||
, ${misc:Depends}
|
||||
Suggests:
|
||||
coreutils
|
||||
fonts-libfinal
|
||||
, coreutils
|
||||
, ncurses-term
|
||||
, grep
|
||||
, sed
|
||||
, vim-common
|
||||
, gzip
|
||||
, xfonts-utils
|
||||
Description: Shared library for the final cut widget toolkit
|
||||
The Final Cut is a class library and widget toolkit with full mouse
|
||||
FINAL CUT is a class library and widget toolkit with full mouse
|
||||
support for creating a text-based user interface. The library supports
|
||||
the programmer to develop an application for the text console. It allows
|
||||
the simultaneous handling of multiple windows on the screen.
|
||||
|
@ -53,7 +50,7 @@ Depends:
|
|||
, libtinfo-dev
|
||||
, libncurses5-dev
|
||||
Description: Developer's library for the final cut widget toolkit
|
||||
The Final Cut is a class library and widget toolkit with full mouse
|
||||
FINAL CUT is a class library and widget toolkit with full mouse
|
||||
support for creating a text-based user interface. The library supports
|
||||
the programmer to develop an application for the text console. It allows
|
||||
the simultaneous handling of multiple windows on the screen.
|
||||
|
@ -77,7 +74,7 @@ Depends:
|
|||
, libtinfo-dev
|
||||
, libncurses5-dev
|
||||
Description: Test and example programs for the final cut widget toolkit
|
||||
The Final Cut is a class library and widget toolkit with full mouse
|
||||
FINAL CUT is a class library and widget toolkit with full mouse
|
||||
support for creating a text-based user interface. The library supports
|
||||
the programmer to develop an application for the text console. It allows
|
||||
the simultaneous handling of multiple windows on the screen.
|
||||
|
@ -88,3 +85,19 @@ Description: Test and example programs for the final cut widget toolkit
|
|||
.
|
||||
This package contains programs that demonstrate the possibilities of
|
||||
the final cut library.
|
||||
|
||||
Package: fonts-libfinal
|
||||
Architecture: all
|
||||
Multi-Arch: foreign
|
||||
Section: fonts
|
||||
Depends:
|
||||
${misc:Depends}
|
||||
, xfonts-utils
|
||||
Suggests:
|
||||
xserver | xfs
|
||||
, grep
|
||||
, sed
|
||||
, gzip
|
||||
Description: X11 bitmap font for FINAL CUT
|
||||
Special X11 bitmap font used by FINAL CUT to display graphic objects.
|
||||
|
||||
|
|
|
@ -7,13 +7,13 @@ Copyright: 2017, Markus Gans <guru.mail@muenster.de>
|
|||
License: LGPL-3
|
||||
|
||||
License: LGPL-3
|
||||
The Final Cut is free software: you can redistribute it and/or modify
|
||||
FINAL CUT 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
.
|
||||
The Final Cut is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
FINAL CUT 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.
|
||||
.
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
AUTHORS
|
||||
COPYING
|
||||
COPYING.LESSER
|
||||
fonts/newfont.txt
|
||||
doc/newfont-8x16.txt
|
||||
doc/newfont-9x16.txt
|
||||
doc/newfont1.png
|
||||
doc/newfont2.png
|
||||
doc/calculator.png
|
|
@ -0,0 +1,3 @@
|
|||
fonts/8x16graph.pcf.gz /usr/share/fonts/X11/misc/
|
||||
fonts/xfonts-finalcut-newfont.alias /etc/X11/fonts/misc/
|
||||
fonts/40-finalcut-newfont.conf usr/share/fontconfig/conf.avail
|
|
@ -0,0 +1 @@
|
|||
usr/share/fontconfig/conf.avail/40-finalcut-newfont.conf etc/fonts/conf.d/40-finalcut-newfont.conf
|
|
@ -1,11 +1,36 @@
|
|||
AUTHORS
|
||||
COPYING
|
||||
COPYING.LESSER
|
||||
ChangeLog
|
||||
README.md
|
||||
doc/benchmark.md
|
||||
doc/calculator.png
|
||||
doc/calendar-draft.png
|
||||
doc/class-diagram.txt
|
||||
doc/class_template.cpp
|
||||
doc/class_template.h
|
||||
doc/coding-style.txt
|
||||
doc/console_codes-manual.sh
|
||||
doc/console_ioctl-manual.sh
|
||||
doc/faq.md
|
||||
doc/fileopen-dialog.png
|
||||
doc/final-cut-application-structure.svg
|
||||
doc/final-cut-widget-tree.svg
|
||||
doc/first-steps_callback-function.cpp.png
|
||||
doc/first-steps_callback-lambda.cpp.png
|
||||
doc/first-steps_callback-method.cpp.png
|
||||
doc/first-steps_dialog.cpp.png
|
||||
doc/first-steps_emit-signal.cpp.png
|
||||
doc/first-steps.md
|
||||
doc/first-steps_memory.cpp.png
|
||||
doc/first-steps_scrollview.cpp.png
|
||||
doc/first-steps_size-adjustment.cpp.png
|
||||
doc/first-steps_timer.cpp.png
|
||||
doc/first-steps_user-event.cpp.png
|
||||
doc/framebuffer.txt
|
||||
doc/Mandelbrot.png
|
||||
doc/mouse-control.md
|
||||
doc/ncurses.supp
|
||||
doc/newfont1.png
|
||||
doc/newfont2.png
|
||||
doc/progress-bar.png
|
||||
doc/readme.txt
|
||||
doc/coding-style.txt
|
||||
|
@ -13,6 +38,20 @@ doc/terminfo-capabilities.sh
|
|||
doc/terminfo-manual.sh
|
||||
doc/textview.png
|
||||
doc/TODO
|
||||
doc/vt100_line_drawing_graphics.png
|
||||
doc/user-theme-bee-palette.svg
|
||||
doc/user-theme-fc16-dark-palette.svg
|
||||
doc/user-theme-fc16-palette.svg
|
||||
doc/user-theme-fc8-palette.svg
|
||||
doc/user-theme.md
|
||||
doc/user-theme.png
|
||||
doc/user-theme-vga-palette.svg
|
||||
doc/vga.txt
|
||||
doc/virtual-terminal.txt
|
||||
doc/vt100_line_drawing_graphics.png
|
||||
doc/widget-coordinates.svg
|
||||
doc/widget-geometry.svg
|
||||
doc/widget-lengths.svg
|
||||
doc/xgraphics
|
||||
doc/xterm.txt
|
||||
fonts/newfont.txt
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
examples/.libs/* usr/share/doc/libfinal-examples/examples
|
||||
examples/*.cpp usr/share/doc/libfinal-examples/examples
|
||||
examples/Makefile.clang usr/share/doc/libfinal-examples/examples
|
||||
examples/Makefile.gcc usr/share/doc/libfinal-examples/examples
|
||||
doc/readme.txt usr/lib/libfinal/examples
|
||||
examples/.libs/* usr/lib/libfinal/examples
|
||||
examples/*.cpp usr/lib/libfinal/examples
|
||||
examples/Makefile.clang usr/lib/libfinal/examples
|
||||
examples/Makefile.gcc usr/lib/libfinal/examples
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
usr/share/doc/libfinal-examples/examples/Makefile.gcc usr/share/doc/libfinal-examples/examples/Makefile
|
||||
usr/lib/libfinal/examples usr/share/doc/libfinal-examples/examples
|
||||
usr/lib/libfinal/examples/Makefile.gcc usr/lib/libfinal/examples/Makefile
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
AUTHORS
|
||||
COPYING
|
||||
COPYING.LESSER
|
||||
ChangeLog
|
||||
doc/readme.txt
|
|
@ -1,3 +1,2 @@
|
|||
usr/lib/*/lib*.so
|
||||
usr/lib/*/lib*.so.*
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
libfinal 0 libfinal0 (>= 0.5.1)
|
||||
libfinal 0 libfinal0 (>= 0.7.2)
|
||||
|
|
|
@ -19,6 +19,8 @@ include /usr/share/dpkg/default.mk
|
|||
|
||||
# main packaging script based on dh7 syntax
|
||||
%:
|
||||
sed -i 's/doc\///g' README.md
|
||||
test -f fonts/fonts.alias && cp fonts/fonts.alias fonts/xfonts-finalcut-newfont.alias || true
|
||||
dh $@ --with autotools-dev
|
||||
|
||||
# debmake generated override targets
|
||||
|
|
|
@ -1,18 +1,43 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Makefile.am - the Final Cut library
|
||||
# Makefile.am - FINAL CUT library
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
docdir = ${datadir}/doc/${PACKAGE}
|
||||
|
||||
EXTRA_DIST = \
|
||||
benchmark.md \
|
||||
build_openbsd.txt \
|
||||
build_solaris.txt \
|
||||
calendar-draft.png \
|
||||
calculator.png \
|
||||
class-diagram.txt \
|
||||
class_template.cpp \
|
||||
class_template.h \
|
||||
console_codes-manual.sh \
|
||||
console_ioctl-manual.sh \
|
||||
faq.md \
|
||||
fileopen-dialog.png \
|
||||
final-cut-application-structure.svg \
|
||||
final-cut-widget-tree.svg \
|
||||
first-steps.md \
|
||||
first-steps_callback-function.cpp.png \
|
||||
first-steps_callback-lambda.cpp.png \
|
||||
first-steps_callback-method.cpp.png \
|
||||
first-steps_dialog.cpp.png \
|
||||
first-steps_emit-signal.cpp.png \
|
||||
first-steps_memory.cpp.png \
|
||||
first-steps_scrollview.cpp.png \
|
||||
first-steps_size-adjustment.cpp.png \
|
||||
first-steps_timer.cpp.png \
|
||||
first-steps_user-event.cpp.png \
|
||||
framebuffer.txt \
|
||||
Mandelbrot.png \
|
||||
mouse-control.md \
|
||||
ncurses.supp \
|
||||
newfont1.png \
|
||||
newfont2.png \
|
||||
newfont-8x16.txt \
|
||||
newfont-9x16.txt \
|
||||
progress-bar.png \
|
||||
readme.txt \
|
||||
coding-style.txt \
|
||||
|
@ -20,19 +45,56 @@ EXTRA_DIST = \
|
|||
terminfo-manual.sh \
|
||||
textview.png \
|
||||
TODO \
|
||||
user-theme.md \
|
||||
user-theme.png \
|
||||
user-theme-bee-palette.svg \
|
||||
user-theme-fc16-dark-palette.svg \
|
||||
user-theme-fc16-palette.svg \
|
||||
user-theme-fc8-palette.svg \
|
||||
user-theme-vga-palette.svg \
|
||||
vga.txt \
|
||||
vt100_line_drawing_graphics.png \
|
||||
virtual-terminal.txt \
|
||||
widget-coordinates.svg \
|
||||
widget-geometry.svg \
|
||||
widget-lengths.svg \
|
||||
xterm.txt \
|
||||
xgraphics
|
||||
|
||||
doc_DATA = \
|
||||
benchmark.md \
|
||||
build_openbsd.txt \
|
||||
build_solaris.txt \
|
||||
calendar-draft.png \
|
||||
calculator.png \
|
||||
class-diagram.txt \
|
||||
class_template.cpp \
|
||||
class_template.h \
|
||||
console_codes-manual.sh \
|
||||
console_ioctl-manual.sh \
|
||||
faq.md \
|
||||
fileopen-dialog.png \
|
||||
final-cut-application-structure.svg \
|
||||
final-cut-widget-tree.svg \
|
||||
first-steps.md \
|
||||
first-steps_callback-function.cpp.png \
|
||||
first-steps_callback-lambda.cpp.png \
|
||||
first-steps_callback-method.cpp.png \
|
||||
first-steps_dialog.cpp.png \
|
||||
first-steps_emit-signal.cpp.png \
|
||||
first-steps_memory.cpp.png \
|
||||
first-steps_scrollview.cpp.png \
|
||||
first-steps_size-adjustment.cpp.png \
|
||||
first-steps_timer.cpp.png \
|
||||
first-steps_user-event.cpp.png \
|
||||
framebuffer.txt \
|
||||
Mandelbrot.png \
|
||||
mouse-control.md \
|
||||
ncurses.supp \
|
||||
newfont1.png \
|
||||
newfont2.png \
|
||||
newfont-8x16.txt \
|
||||
newfont-9x16.txt \
|
||||
progress-bar.png \
|
||||
readme.txt \
|
||||
coding-style.txt \
|
||||
|
@ -40,6 +102,19 @@ doc_DATA = \
|
|||
terminfo-manual.sh \
|
||||
textview.png \
|
||||
TODO \
|
||||
user-theme.md \
|
||||
user-theme.png \
|
||||
user-theme-bee-palette.svg \
|
||||
user-theme-fc16-dark-palette.svg \
|
||||
user-theme-fc16-palette.svg \
|
||||
user-theme-fc8-palette.svg \
|
||||
user-theme-vga-palette.svg \
|
||||
vga.txt \
|
||||
vt100_line_drawing_graphics.png \
|
||||
virtual-terminal.txt \
|
||||
widget-coordinates.svg \
|
||||
widget-geometry.svg \
|
||||
widget-lengths.svg \
|
||||
xterm.txt \
|
||||
xgraphics
|
||||
|
||||
|
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,30 @@
|
|||
Benchmark
|
||||
=========
|
||||
|
||||
The Rotozoomer example can perform a benchmark run with the parameter "-b" to determine the FINAL CUT character speed in the terminal.
|
||||
|
||||
|
||||
[![rotozoomer-benchmark](https://asciinema.org/a/316531.svg)](https://asciinema.org/a/316531?size=medium&autoplay=1)
|
||||
|
||||
|
||||
Speed tests
|
||||
-----------
|
||||
|
||||
| Terminal | Size | Time | Loops | Frame rate |
|
||||
|--------------------|-------|---------|-------|------------|
|
||||
| XTerm | 80x24 | 2.693ms | 314 | 116.598fps |
|
||||
| PuTTY | 80x24 | 2.711ms | 314 | 115.824fps |
|
||||
| Mintty | 80x24 | 2.799ms | 314 | 112.182fps |
|
||||
| Cygwin (cmd) | 80x24 | 2.99ms | 314 | 105.016fps |
|
||||
| rxvt-cygwin-native | 80x24 | 2.836ms | 314 | 110.719fps |
|
||||
| rxvt | 80x24 | 3.064ms | 314 | 102.480fps |
|
||||
| rxvt-unicode | 80x24 | 2.853ms | 314 | 110.059fps |
|
||||
| Tera Term | 80x24 | 3.154ms | 314 | 99.5561fps |
|
||||
| Konsole | 80x24 | 2.727ms | 314 | 115.144fps |
|
||||
| GNOME-Terminal | 80x24 | 2.683ms | 314 | 117.033fps |
|
||||
| Linux console | 80x25 | 2.757ms | 314 | 113.891fps |
|
||||
| FreeBSD console | 80x25 | 2.726ms | 314 | 115.187fps |
|
||||
| NetBSD console | 80x25 | 2.747ms | 314 | 114.306fps |
|
||||
| OpenBSD console | 80x25 | 2.751ms | 314 | 114.140fps |
|
||||
| Solaris console | 80x34 | 3.072ms | 314 | 102.213fps |
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
Build FINAL CUT with the clang c++ compiler
|
||||
-------------------------------------------
|
||||
openbsd# CXX=clang++ ./build.sh
|
||||
|
||||
Build FINAL CUT with eg++
|
||||
-------------------------
|
||||
openbsd# CXX=eg++ ./build.sh
|
||||
|
||||
Install egcc on OpenBSD
|
||||
-----------------------
|
||||
openbsd# pkg_add g++
|
||||
quirks-3.124 signed on 2019-04-15T12:10:16Z
|
||||
Ambiguous: choose package for g++
|
||||
a 0: <None>
|
||||
1: g++-4.9.4p18
|
||||
2: g++-8.3.0
|
||||
Your choice: 2
|
||||
g++-8.3.0:gcc-libs-8.3.0: ok
|
||||
g++-8.3.0:gmp-6.1.2p3: ok
|
||||
g++-8.3.0:mpfr-3.1.5.2p0: ok
|
||||
g++-8.3.0:libmpc-0.9p2: ok
|
||||
g++-8.3.0:gcc-8.3.0: ok
|
||||
g++-8.3.0: ok
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
Install gcc5g++ on Solaris
|
||||
https://www.opencsw.org/packages/gcc5g++/
|
||||
|
||||
pkgadd -d http://get.opencsw.org/now
|
||||
/opt/csw/bin/pkgutil -U
|
||||
/opt/csw/bin/pkgutil -y -i gcc5g++
|
||||
/usr/sbin/pkgchk -L CSWgcc5g++ # list files
|
||||
|
||||
|
||||
|
||||
PATH=/opt/csw/bin:$PATH
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
|
@ -1,76 +1,95 @@
|
|||
══════════════════════════════════════════════════════════════════════════════
|
||||
Class digramm
|
||||
══════════════════════════════════════════════════════════════════════════════
|
||||
1┌──────────────┐
|
||||
1┌────────────┐
|
||||
┌-----------┤ FTermLinux │
|
||||
: └────────────┘
|
||||
: 1┌──────────────┐
|
||||
┌-----------┤ FTermFreeBSD │
|
||||
: └──────────────┘
|
||||
: 1┌──────────────┐ ┌───────────┐
|
||||
┌-----------┤ FTermOpenBSD │ ┌────┤ FKeyEvent │
|
||||
: └──────────────┘ │ └───────────┘
|
||||
: 1┌──────────────┐
|
||||
┌-----------┤ FTermOpenBSD │
|
||||
: └──────────────┘
|
||||
: 1┌────────────────┐ ┌───────────┐
|
||||
┌-----------┤ FTermDetection │ ┌────┤ FKeyEvent │
|
||||
: └────────────────┘ │ └───────────┘
|
||||
: 1┌────────────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermDetection │ ├────┤ FMouseEvent │
|
||||
┌-----------┤ FTermcapQuirks │ ├────┤ FMouseEvent │
|
||||
: └────────────────┘ │ └─────────────┘
|
||||
: 1┌────────────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermcapQuirks │ ├────┤ FWheelEvent │
|
||||
: └────────────────┘ │ └─────────────┘
|
||||
: 1┌────────────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermXTerminal │ ├────┤ FFocusEvent │
|
||||
┌-----------┤ FTermXTerminal │ ├────┤ FWheelEvent │
|
||||
: └────────────────┘ │ └─────────────┘
|
||||
: 1┌──────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermcap │ ├────┤ FAccelEvent │
|
||||
┌-----------┤ FTermcap │ ├────┤ FFocusEvent │
|
||||
: └──────────┘ │ └─────────────┘
|
||||
: 1┌──────────┐ │ ┌──────────────┐
|
||||
┌-----------┤ FTermios │ ├────┤ FResizeEvent │
|
||||
: └──────────┘ │ └──────────────┘
|
||||
: 1┌───────────────┐ │ ┌────────────┐
|
||||
┌-----------┤ FColorPalette │ ├────┤ FShowEvent │
|
||||
: └───────────────┘ │ └────────────┘
|
||||
: 1┌──────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FTermios │ ├────┤ FAccelEvent │
|
||||
: └──────────┘ │ └─────────────┘
|
||||
: 1┌───────────────┐ │ ┌──────────────┐
|
||||
┌-----------┤ FColorPalette │ ├────┤ FResizeEvent │
|
||||
: └───────────────┘ │ └──────────────┘
|
||||
: 1┌───────────┐ │ ┌────────────┐
|
||||
┌-----------┤ FOptiMove │ ├────┤ FHideEvent │
|
||||
┌-----------┤ FOptiMove │ ├────┤ FShowEvent │
|
||||
: └───────────┘ │ └────────────┘
|
||||
: 1┌───────────┐ │ ┌────────────┐
|
||||
┌-----------┤ FOptiAttr │ ├────┤ FHideEvent │
|
||||
: └───────────┘ │ └────────────┘
|
||||
: 1┌───────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FOptiAttr │ ├────┤ FCloseEvent │
|
||||
┌-----------┤ FKeyboard │ ├────┤ FCloseEvent │
|
||||
: └───────────┘ │ └─────────────┘
|
||||
: 1┌───────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FKeyboard │ ├────┤ FTimerEvent │
|
||||
: └───────────┘ │ └─────────────┘
|
||||
: 1┌───────────────┐ │
|
||||
┌-----------┤ FMouseControl │ │ ┌──────────────┐
|
||||
: └───────────────┘ │ ┌────┤ FApplication │
|
||||
: *┌─────────┐ │ │ └──────────────┘
|
||||
: ┌--------┤ FString │ │ │ ┌─────────┐
|
||||
: : └─────────┘ │ ├────┤ FButton │
|
||||
: : *┌────────┐ │ │ └─────────┘
|
||||
: 1┌───────────────┐ │ ┌─────────────┐
|
||||
┌-----------┤ FMouseControl │ ├────┤ FTimerEvent │
|
||||
: └───────────────┘ │ └─────────────┘
|
||||
: 1┌─────────┐ │ ┌────────────┐1 1┌───────┐
|
||||
┌-----------┤ FSystem │ ├────┤ FUserEvent ├------┤ FData │
|
||||
: └─────────┘ │ └────────────┘ └───────┘
|
||||
: *┌─────────┐ │ ┌──────┐ ┌─────────┐
|
||||
: ┌--------┤ FString │ │ │ FLog │◄──┤ FLogger │
|
||||
: : └─────────┘ │ └──┬───┘ └─────────┘
|
||||
: : *┌───────────────┐ │ :1
|
||||
: ┌--------┤ FStringStream │ │ ┌──┴───────────┐
|
||||
: : └───────────────┘ │ ┌────┤ FApplication │
|
||||
: : *┌────────┐ │ │ └──────────────┘
|
||||
: ┌--------┤ FPoint │ │ │ ┌────────┐
|
||||
: : └────────┘ │ ├────┤ FLabel │
|
||||
: : *┌───────┐ │ │ └────────┘
|
||||
: ┌--------┤ FRect │ │ │ ┌───────────┐
|
||||
: : └───────┘ │ ├────┤ FLineEdit │
|
||||
:1 :1 │ │ └───────────┘
|
||||
┌─┴──┴──┐ │ │ ┌──────────────┐ ┌──────────────┐
|
||||
│ FTerm │ │ ├────┤ FButtonGroup │ ┌──┤ FRadioButton │
|
||||
└───┬───┘ ┌────────┐ │ │ └──────────────┘ │ └──────────────┘
|
||||
:1 │ FEvent │◄─────┘ │ ┌───────────────┐ │ ┌───────────┐
|
||||
┌───┴────┐ └────┬───┘ ├────┤ FToggleButton │◄─┼──┤ FCheckBox │
|
||||
│ FVTerm │◄──┐ :1 │ └───────────────┘ │ └───────────┘
|
||||
└────────┘ │ ┌────┴────┐ │ ┌──────────────┐ │ ┌─────────┐
|
||||
├────┤ FWidget │◄───────┼────┤ FProgressbar │ └──┤ FSwitch │
|
||||
┌─────────┐ │ └─────────┘ │ └──────────────┘ └─────────┘
|
||||
│ FObject │◄──┘ │ ┌────────────┐
|
||||
└─────────┘ ├────┤ FScrollbar │
|
||||
: : *┌───────┐ │ │ └───────────┘
|
||||
: ┌--------┤ FSize │ │ │ ┌──────────┐
|
||||
: : └───────┘ │ ├────┤ FSpinBox │
|
||||
:1 :1 │ │ └──────────┘
|
||||
┌─┴──┴──┐ │ │ ┌─────────┐
|
||||
│ FTerm │ │ ├────┤ FButton │
|
||||
└───┬───┘ ┌────────┐ │ │ └─────────┘
|
||||
:1 │ FEvent │◄─────┘ │ ┌──────────────┐ ┌──────────────┐
|
||||
┌───┴────┐ └────┬───┘ ├────┤ FButtonGroup │ ┌──┤ FRadioButton │
|
||||
│ FVTerm │◄──┐ :1 │ └──────────────┘ │ └──────────────┘
|
||||
└────────┘ │ ┌────┴────┐ │ ┌───────────────┐ │ ┌───────────┐
|
||||
├────┤ FWidget │◄───────┼────┤ FToggleButton │◄─┼──┤ FCheckBox │
|
||||
┌─────────┐ │ └────┬────┘ │ └───────────────┘ │ └───────────┘
|
||||
│ FObject │◄──┘ :1 │ ┌──────────────┐ │ ┌─────────┐
|
||||
└─────────┘ ┌──────┴────────┐ ├────┤ FProgressbar │ └──┤ FSwitch │
|
||||
│ FWidgetColors │ │ └──────────────┘ └─────────┘
|
||||
└───────────────┘ │ ┌────────────┐
|
||||
├────┤ FScrollbar │
|
||||
│ └────────────┘
|
||||
│ ┌───────────┐
|
||||
├────┤ FTextView │
|
||||
│ └───────────┘
|
||||
│ ┌──────────┐1 *┌──────────────┐
|
||||
├────┤ FListBox ├-------┤ FListBoxItem │
|
||||
│ └──────────┘ └──────────────┘
|
||||
┌─────────────┐1 │ 1┌───────────┐1 *┌───────────────┐
|
||||
│ FTermBuffer ├----------------------├────┤ FListView ├------┤ FListViewItem │
|
||||
└─────────────┘ │ └───────────┘ └───────────────┘
|
||||
│ ┌─────────────┐
|
||||
├────┤ FScrollView │
|
||||
│ └─────────────┘
|
||||
│ ┌───────────┐1 1┌──────────────────┐
|
||||
├────┤ FComboBox ├------┤ FDropDownListBox │
|
||||
│ └───────────┘ └──────────────────┘
|
||||
┌─────────────┐1 │ ┌──────────┐1 *┌──────────────┐1
|
||||
│ FTermBuffer ├----------------------├────┤ FListBox ├-------┤ FListBoxItem ├--┐
|
||||
└─────────────┘ │ └──────────┘ └──────────────┘ :
|
||||
│ 1┌───────────┐1 *┌───────────────┐ :
|
||||
├────┤ FListView ├------┤ FListViewItem │ :
|
||||
│ └───────────┘ └────────┬──────┘ :
|
||||
│ ┌─────────────┐ :1 :
|
||||
├────┤ FScrollView │ ┌───┴───┐1 :
|
||||
│ └─────────────┘ │ FData ├----┘
|
||||
│ └───────┘
|
||||
│ ┌────────────┐1 *┌────────────┐
|
||||
│ ┌──┤ FStatusBar ├-----┤ FStatusKey │
|
||||
│ │ └────────────┘ └────────────┘
|
||||
|
@ -81,9 +100,9 @@
|
|||
└──┬──┬───┘ └─────────┘ │ ┌─────────────┐
|
||||
▲ ▲ └──┤ FMessageBox │
|
||||
│ │ └─────────────┘
|
||||
│ │ ┌──────────┐
|
||||
│ └──────┤ FToolTip │
|
||||
│ └──────────┘
|
||||
│ │ ┌──────────┐ ┌────────────────┐
|
||||
│ └──────┤ FToolTip │◄─┤ FBusyIndicator │
|
||||
│ └──────────┘ └────────────────┘
|
||||
└───────────────┐ ┌──────────┐
|
||||
│ ┌───┤ FMenuBar │
|
||||
┌───────────┐ └──────┤ └──────────┘
|
||||
|
@ -100,4 +119,3 @@
|
|||
└──────────┘ │ ┌────────────────┐* :
|
||||
└──┤ FRadioMenuItem ├---┘
|
||||
└────────────────┘
|
||||
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
/***********************************************************************
|
||||
* fclassname.cpp - [brief description] *
|
||||
* *
|
||||
* This file is part of the Final Cut widget toolkit *
|
||||
* This file is part of the FINAL CUT widget toolkit *
|
||||
* *
|
||||
* Copyright [year] [Maintainer] *
|
||||
* Copyright [year] [Maintainer] *
|
||||
* *
|
||||
* The Final Cut 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 3 of *
|
||||
* FINAL CUT 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 3 of *
|
||||
* the License, or (at your option) any later version. *
|
||||
* *
|
||||
* The Final Cut is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* FINAL CUT 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. *
|
||||
* *
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
/***********************************************************************
|
||||
* fclassname.h - [brief description] *
|
||||
* *
|
||||
* This file is part of the Final Cut widget toolkit *
|
||||
* This file is part of the FINAL CUT widget toolkit *
|
||||
* *
|
||||
* Copyright [year] [Maintainer] *
|
||||
* *
|
||||
* The Final Cut 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 3 of *
|
||||
* FINAL CUT 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 3 of *
|
||||
* the License, or (at your option) any later version. *
|
||||
* *
|
||||
* The Final Cut is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* FINAL CUT 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. *
|
||||
* *
|
||||
|
@ -44,9 +44,6 @@ namespace finalcut
|
|||
// class FClassName
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(1)
|
||||
|
||||
class FClassName
|
||||
{
|
||||
public:
|
||||
|
@ -59,9 +56,15 @@ class FClassName
|
|||
// Constructors
|
||||
FClassName();
|
||||
|
||||
// Disable copy constructor
|
||||
FClassName (const FClassName&) = delete;
|
||||
|
||||
// Destructor
|
||||
~FClassName();
|
||||
|
||||
// Disable copy assignment operator (=)
|
||||
FClassName& operator = (const FClassName&) = delete;
|
||||
|
||||
// Overloaded operators
|
||||
|
||||
// Accessors
|
||||
|
@ -76,7 +79,7 @@ class FClassName
|
|||
|
||||
// Callback methods
|
||||
|
||||
// Data Members
|
||||
// Data members
|
||||
|
||||
protected:
|
||||
// Typedefs and Enumerations
|
||||
|
@ -93,19 +96,13 @@ class FClassName
|
|||
|
||||
// Callback methods
|
||||
|
||||
// Data Members
|
||||
// Data members
|
||||
|
||||
private:
|
||||
// Typedefs and Enumerations
|
||||
|
||||
// Constants
|
||||
|
||||
// Disable copy constructor
|
||||
FClassName (const FClassName&);
|
||||
|
||||
// Disable assignment operator (=)
|
||||
FClassName& operator = (const FClassName&);
|
||||
|
||||
// Accessors
|
||||
|
||||
// Inquiries
|
||||
|
@ -116,12 +113,11 @@ class FClassName
|
|||
|
||||
// Callback methods
|
||||
|
||||
// Data Members
|
||||
// Data members
|
||||
|
||||
// Friend class
|
||||
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
// FClassName inline functions
|
||||
//----------------------------------------------------------------------
|
||||
|
@ -130,4 +126,3 @@ class FClassName
|
|||
|
||||
#endif // FCLASSNAME_H
|
||||
|
||||
|
||||
|
|
|
@ -7,9 +7,18 @@ Formatting
|
|||
* A new line should begin after 72 (max. 80) characters
|
||||
* Use 2 spaces indent. Do not use tabs!
|
||||
* Leave a space after the keywords if, switch, while, do, for, and return
|
||||
* Conditions are placed in parentheses with spaces -> if ( a > 5 )
|
||||
* Use one blank line before and after a for, if, switch,
|
||||
while, do..while code block
|
||||
* In parameter lists, leave a space after each comma
|
||||
* Starting curly brace "{" in a new line
|
||||
|
||||
Naming
|
||||
------
|
||||
* class name: UpperCamelCase
|
||||
* Function: lowerCamelCase
|
||||
* Callback function: cb_lowerCamelCase (beginning with "cb_" as prefix)
|
||||
* Variable: lower_case_underscored
|
||||
|
||||
Class declaration order
|
||||
-----------------------
|
||||
|
|
|
@ -6,7 +6,7 @@ Frequently Asked Questions
|
|||
What is FINAL CUT?
|
||||
------------------
|
||||
|
||||
The Final Cut is a [C++](https://en.wikipedia.org/wiki/C%2B%2B) class library
|
||||
FINAL CUT is a [C++](https://en.wikipedia.org/wiki/C%2B%2B) class library
|
||||
and a widget toolkit with full mouse support for creating a text-based user
|
||||
interface. It's based on the Termcap library and has its own cursor
|
||||
optimization and window management.
|
||||
|
@ -85,6 +85,7 @@ You need three things:
|
|||
* autoconf
|
||||
* autoconf-archive
|
||||
* libtool
|
||||
* pkg-config
|
||||
|
||||
3. Development packages for following libraries:
|
||||
|
||||
|
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,220 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="74.630997mm"
|
||||
viewBox="0 0 101.5 74.630997"
|
||||
width="101.5mm"
|
||||
version="1.1"
|
||||
id="svg61"
|
||||
sodipodi:docname="final-cut-application-structure.svg"
|
||||
inkscape:version="0.92.1 r15371">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1984"
|
||||
id="namedview35"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.8893731"
|
||||
inkscape:cx="331.13905"
|
||||
inkscape:cy="54.29145"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="55"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g23" />
|
||||
<metadata
|
||||
id="metadata67">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs65" />
|
||||
<linearGradient
|
||||
id="a"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="33.698196"
|
||||
x2="34.111275"
|
||||
y1="296.49637"
|
||||
y2="222.78156">
|
||||
<stop
|
||||
offset="0"
|
||||
stop-color="#dbdbdc"
|
||||
id="stop2"
|
||||
style="stop-color:#e8a7a7;stop-opacity:1" />
|
||||
<stop
|
||||
offset="1"
|
||||
stop-color="#fff"
|
||||
id="stop4" />
|
||||
</linearGradient>
|
||||
<g
|
||||
transform="translate(0,-222.36897)"
|
||||
id="g59">
|
||||
<g
|
||||
id="g23"
|
||||
style="stroke:#000000;fill:none"
|
||||
transform="translate(-0.00447221)">
|
||||
<rect
|
||||
height="74.20752"
|
||||
ry="2.5604739"
|
||||
stroke-miterlimit="1.5"
|
||||
width="65.967117"
|
||||
x="0.2115"
|
||||
y="222.58098"
|
||||
id="rect7"
|
||||
style="fill:#f6f8fa;fill-opacity:1;stroke-width:0.42300001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5" />
|
||||
<path
|
||||
d="M 7.8726193,233.11525 H 66.187848"
|
||||
id="path9"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001;stroke-linecap:square;stroke-linejoin:bevel" />
|
||||
<path
|
||||
d="M 7.8726193,243.73006 H 66.187848"
|
||||
id="path11"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 7.8726193,254.34488 H 66.187848"
|
||||
id="path13"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 7.8726193,264.95969 H 66.187848"
|
||||
id="path15"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 0.19656226,275.5745 H 66.187852"
|
||||
id="path17"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 0.19656226,286.18931 H 66.187852"
|
||||
id="path19"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001" />
|
||||
<path
|
||||
d="M 7.9427453,275.5745 V 233.11525"
|
||||
id="path21"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke-width:0.42300001;stroke-linecap:square;stroke-linejoin:bevel" />
|
||||
</g>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;stroke-width:0.26458299;stroke-opacity:0"
|
||||
x="33.420082"
|
||||
y="229.02936"
|
||||
id="text27">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;stroke-width:0.26458299;stroke-opacity:0"
|
||||
x="33.420082"
|
||||
y="229.02936"
|
||||
id="tspan25">Application</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#052867;fill-opacity:1;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="33.219879"
|
||||
y="282.35825"
|
||||
id="text31">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#052867;fill-opacity:1;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="33.219879"
|
||||
y="282.35825"
|
||||
id="tspan29">Standard C/C++ Library</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#052867;fill-opacity:1;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="33.220379"
|
||||
y="293.15323"
|
||||
id="text35">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#052867;fill-opacity:1;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="33.220379"
|
||||
y="293.15323"
|
||||
id="tspan33">Operating System</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#083c99;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113426"
|
||||
y="240.10773"
|
||||
id="text39">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#083c99;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113426"
|
||||
y="240.10773"
|
||||
id="tspan37">Widgets</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#083c99;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113487"
|
||||
y="250.53276"
|
||||
id="text43">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#083c99;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113487"
|
||||
y="250.53276"
|
||||
id="tspan41">Virtual Terminal</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113487"
|
||||
y="261.55215"
|
||||
id="text47">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.113487"
|
||||
y="261.55215"
|
||||
id="tspan45">Termcap</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill-opacity:0.99858398;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.11351"
|
||||
y="271.62482"
|
||||
id="text51">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill-opacity:0.99858398;stroke-width:0.42300001;stroke-opacity:0"
|
||||
x="37.11351"
|
||||
y="271.62482"
|
||||
id="tspan49">Terminal</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#083c99;stroke-width:0.26458299;stroke-opacity:0"
|
||||
x="86.416771"
|
||||
y="245.48337"
|
||||
id="text55">
|
||||
<tspan
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;fill:#083c99;stroke-width:0.26458299;stroke-opacity:0"
|
||||
x="86.416771"
|
||||
y="245.48337"
|
||||
id="tspan53">FINAL CUT</tspan>
|
||||
</text>
|
||||
<g
|
||||
aria-label="}"
|
||||
transform="scale(0.99731046,1.0026968)"
|
||||
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:condensed;font-size:22.67463493px;line-height:125%;font-family:'Fira Sans Condensed';-inkscape-font-specification:'Fira Sans Condensed, Ultra-Light Condensed';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458329px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="text4545">
|
||||
<path
|
||||
d="m 68.105817,232.32133 v 0.56687 c 1.22443,0 1.655248,0.61222 1.655248,1.90467 v 6.21285 c 0,1.4285 0.476168,1.83665 1.496526,2.06339 -1.020358,0.22675 -1.496526,0.63489 -1.496526,2.06339 v 6.21285 c 0,1.29246 -0.430818,1.90467 -1.655248,1.90467 v 0.56687 c 1.473851,0 2.312813,-0.74826 2.312813,-2.47154 v -6.30355 c 0,-1.20175 0.521516,-1.60989 1.541875,-1.60989 v -0.72559 c -1.020359,0 -1.541875,-0.40815 -1.541875,-1.6099 v -6.30355 c 0,-1.72327 -0.838962,-2.47154 -2.312813,-2.47154 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:200;font-stretch:condensed;font-size:22.67463493px;font-family:'Fira Sans Condensed';-inkscape-font-specification:'Fira Sans Condensed, Ultra-Light Condensed';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458329px"
|
||||
id="path4547"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 10 KiB |
|
@ -0,0 +1,324 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height="65.484894mm"
|
||||
viewBox="0 0 149.86537 65.484895"
|
||||
width="149.86537mm"
|
||||
version="1.1"
|
||||
id="svg109">
|
||||
<metadata
|
||||
id="metadata115">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs113" />
|
||||
<marker
|
||||
id="a"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0">
|
||||
<path
|
||||
d="m0 0 5-5-17.5 5 17.5 5z"
|
||||
fill-rule="evenodd"
|
||||
stroke="#000"
|
||||
stroke-width="1pt"
|
||||
transform="matrix(-.4 0 0 -.4 -4 0)"
|
||||
id="path2" />
|
||||
</marker>
|
||||
<marker
|
||||
id="b"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0">
|
||||
<path
|
||||
d="m0 0 5-5-17.5 5 17.5 5z"
|
||||
fill-rule="evenodd"
|
||||
stroke="#000"
|
||||
stroke-width="1pt"
|
||||
transform="matrix(-.4 0 0 -.4 -4 0)"
|
||||
id="path5" />
|
||||
</marker>
|
||||
<marker
|
||||
id="c"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0">
|
||||
<path
|
||||
d="m0 0 5-5-17.5 5 17.5 5z"
|
||||
fill-rule="evenodd"
|
||||
stroke="#000"
|
||||
stroke-width="1pt"
|
||||
transform="matrix(-.4 0 0 -.4 -4 0)"
|
||||
id="path8" />
|
||||
</marker>
|
||||
<marker
|
||||
id="d"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0">
|
||||
<path
|
||||
d="m0 0 5-5-17.5 5 17.5 5z"
|
||||
fill-rule="evenodd"
|
||||
stroke="#000"
|
||||
stroke-width="1pt"
|
||||
transform="matrix(-.4 0 0 -.4 -4 0)"
|
||||
id="path11" />
|
||||
</marker>
|
||||
<marker
|
||||
id="e"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0">
|
||||
<path
|
||||
d="m0 0 5-5-17.5 5 17.5 5z"
|
||||
fill-rule="evenodd"
|
||||
stroke="#000"
|
||||
stroke-width="1pt"
|
||||
transform="matrix(-.4 0 0 -.4 -4 0)"
|
||||
id="path14" />
|
||||
</marker>
|
||||
<g
|
||||
style="stroke-width:1.20796704"
|
||||
id="g57">
|
||||
<g
|
||||
transform="matrix(0.82806766,0,0,0.82760652,18.811674,-210.24741)"
|
||||
id="g23">
|
||||
<path
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.51105303;stroke-linecap:round;stroke-linejoin:round"
|
||||
d="m 7.868146,254.29825 h 57.783382 v 10.66144 H 7.868146 Z"
|
||||
id="path17" />
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097;stroke-opacity:0"
|
||||
x="37.113487"
|
||||
y="261.55215"
|
||||
id="text21">
|
||||
<tspan
|
||||
style="stroke-width:0.51097"
|
||||
x="37.113487"
|
||||
y="261.55215"
|
||||
id="tspan19">FApplication</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.82806766,0,0,0.82760652,25.151866,-0.203308)"
|
||||
id="g31">
|
||||
<path
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.51105303;stroke-linecap:round;stroke-linejoin:round"
|
||||
d="M 15.875,19.022009 H 42.333334 V 29.683451 H 15.875 Z"
|
||||
id="path25" />
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097;stroke-opacity:0"
|
||||
x="29.24534"
|
||||
y="26.275915"
|
||||
id="text29">
|
||||
<tspan
|
||||
style="stroke-width:0.51097"
|
||||
x="29.24534"
|
||||
y="26.275915"
|
||||
id="tspan27">FDialog</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.82806766,0,0,0.82760652,38.120716,15.124655)"
|
||||
id="g39">
|
||||
<path
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.51105303;stroke-linecap:round;stroke-linejoin:round"
|
||||
d="M 15.875,19.022009 H 42.333334 V 29.683451 H 15.875 Z"
|
||||
id="path33" />
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097;stroke-opacity:0"
|
||||
x="29.24534"
|
||||
y="26.275915"
|
||||
id="text37">
|
||||
<tspan
|
||||
style="stroke-width:0.51097"
|
||||
x="29.24534"
|
||||
y="26.275915"
|
||||
id="tspan35">FDialog</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.82806766,0,0,0.82760652,12.006292,15.124655)"
|
||||
id="g47">
|
||||
<path
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.51105303;stroke-linecap:round;stroke-linejoin:round"
|
||||
d="M 15.875,19.022009 H 42.333334 V 29.683451 H 15.875 Z"
|
||||
id="path41" />
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097;stroke-opacity:0"
|
||||
x="29.24534"
|
||||
y="26.275915"
|
||||
id="text45">
|
||||
<tspan
|
||||
style="stroke-width:0.51097"
|
||||
x="29.24534"
|
||||
y="26.275915"
|
||||
id="tspan43">FLabel</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.82806766,0,0,0.82760652,25.151866,-0.203308)"
|
||||
id="g55">
|
||||
<path
|
||||
style="fill:#f9f9f9;stroke:#000000;stroke-width:0.51105303;stroke-linecap:round;stroke-linejoin:round"
|
||||
d="M 31.75,56.063679 H 58.208334 V 66.725121 H 31.75 Z"
|
||||
id="path49" />
|
||||
<text
|
||||
style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097;stroke-opacity:0"
|
||||
x="45.120338"
|
||||
y="63.317585"
|
||||
id="text53">
|
||||
<tspan
|
||||
style="stroke-width:0.51097"
|
||||
x="45.120338"
|
||||
y="63.317585"
|
||||
id="tspan51">FListBox</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<text
|
||||
style="font-style:italic;font-weight:bold;font-size:4.08859491px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
|
||||
transform="scale(1.0002786,0.99972148)"
|
||||
x="62.287796"
|
||||
y="65.409096"
|
||||
id="text61">
|
||||
<tspan
|
||||
x="62.287796"
|
||||
y="65.409096"
|
||||
id="tspan59">etc.</tspan>
|
||||
</text>
|
||||
<path
|
||||
d="m49.251306 9.2100164v5.7870836"
|
||||
fill="none"
|
||||
marker-end="url(#a)"
|
||||
stroke="#000"
|
||||
stroke-width=".423069"
|
||||
id="path63" />
|
||||
<path
|
||||
d="m42.679299 24.537976v5.779196"
|
||||
fill="none"
|
||||
marker-end="url(#b)"
|
||||
stroke="#000"
|
||||
stroke-width=".423069"
|
||||
id="path65" />
|
||||
<path
|
||||
d="m55.736511 24.537898v5.779196"
|
||||
fill="none"
|
||||
marker-end="url(#c)"
|
||||
stroke="#000"
|
||||
stroke-width=".423069"
|
||||
id="path67" />
|
||||
<path
|
||||
d="m62.369882 39.865938v5.548839"
|
||||
fill="none"
|
||||
marker-end="url(#d)"
|
||||
stroke="#000"
|
||||
stroke-width=".423069"
|
||||
id="path69" />
|
||||
<path
|
||||
d="m62.369882 55.193909v5.548839"
|
||||
fill="none"
|
||||
marker-end="url(#e)"
|
||||
stroke="#000"
|
||||
stroke-width=".423069"
|
||||
id="path71" />
|
||||
<g
|
||||
style="font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097;stroke-opacity:0"
|
||||
transform="matrix(0.82806766,0,0,0.82760652,25.151866,-0.203308)"
|
||||
id="g89">
|
||||
<text
|
||||
x="-23.01368"
|
||||
y="8.7182531"
|
||||
id="text75">
|
||||
<tspan
|
||||
x="-23.01368"
|
||||
y="8.7182531"
|
||||
id="tspan73">Parent:</tspan>
|
||||
</text>
|
||||
<text
|
||||
x="-24.412582"
|
||||
y="27.239086"
|
||||
id="text79">
|
||||
<tspan
|
||||
x="-24.412582"
|
||||
y="27.239086"
|
||||
id="tspan77">Child:</tspan>
|
||||
</text>
|
||||
<text
|
||||
x="-20.59841"
|
||||
y="44.796837"
|
||||
id="text83">
|
||||
<tspan
|
||||
x="-20.59841"
|
||||
y="44.796837"
|
||||
id="tspan81">Subchild:</tspan>
|
||||
</text>
|
||||
<text
|
||||
x="-15.852447"
|
||||
y="63.317669"
|
||||
id="text87">
|
||||
<tspan
|
||||
x="-15.852447"
|
||||
y="63.317669"
|
||||
id="tspan85">Sub-subchild:</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g
|
||||
style="font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097;stroke-opacity:0"
|
||||
transform="matrix(0.82806766,0,0,0.82760652,107.7173,-0.203308)"
|
||||
id="g107">
|
||||
<text
|
||||
x="-5.0208001"
|
||||
y="8.7182531"
|
||||
id="text93">
|
||||
<tspan
|
||||
x="-5.0208001"
|
||||
y="8.7182531"
|
||||
id="tspan91">Application widget (= 1)</tspan>
|
||||
</text>
|
||||
<text
|
||||
x="-12.021867"
|
||||
y="27.239086"
|
||||
id="text97">
|
||||
<tspan
|
||||
x="-12.021868"
|
||||
y="27.239086"
|
||||
id="tspan95">Main widget (= 1)</tspan>
|
||||
</text>
|
||||
<text
|
||||
x="5.9180651"
|
||||
y="44.796837"
|
||||
id="text101">
|
||||
<tspan
|
||||
x="5.918066"
|
||||
y="44.796837"
|
||||
id="tspan99">Widget(s) of the main widget (≥ 0)</tspan>
|
||||
</text>
|
||||
<text
|
||||
x="10.413227"
|
||||
y="63.317669"
|
||||
id="text105">
|
||||
<tspan
|
||||
x="10.413226"
|
||||
y="63.317669"
|
||||
id="tspan103">Widget(s) from the parent widget (≥ 0)</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 9.5 KiB |
1399
doc/first-steps.md
After Width: | Height: | Size: 873 B |
After Width: | Height: | Size: 633 B |
After Width: | Height: | Size: 469 B |
After Width: | Height: | Size: 390 B |
After Width: | Height: | Size: 491 B |
After Width: | Height: | Size: 863 B |
After Width: | Height: | Size: 908 B |
After Width: | Height: | Size: 723 B |
After Width: | Height: | Size: 405 B |
After Width: | Height: | Size: 586 B |
|
@ -1,7 +1,7 @@
|
|||
Framebuffer
|
||||
===========
|
||||
|
||||
The Final Cut determines the used number of bits per pixel (bpp)
|
||||
FINAL CUT determines the used number of bits per pixel (bpp)
|
||||
for Linux framebuffer console to determine whether 16 (or more)
|
||||
different background colors can be displayed. Therefore your user
|
||||
needs read-access to the framebuffer device (/dev/fb0 or /dev/fb/0).
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
Title bar actions on mouse clicks
|
||||
=================================
|
||||
|
||||
The FINAL CUT title bar of dialog windows has different behaviors on mouse clicks.
|
||||
|
||||
|
||||
Clicking on the title bar
|
||||
-------------------------
|
||||
|
||||
* A left-click activates and raises the window. After that, you can drag the window with the mouse.
|
||||
* A middle-click activates and lower the window.
|
||||
* A right-click activates the window and keeps its current position in the window stack.
|
||||
* A double-click maximizes or restores the window size for a resizable dialog.
|
||||
|
||||
|
||||
Clicking the title bar buttons
|
||||
------------------------------
|
||||
|
||||
* Single-clicking on the title bar menu button opens the title bar menu.
|
||||
* Double-clicking on the title bar menu button closes the dialog.
|
||||
* Single-clicking on the zoom button maximizes the window size.
|
||||
* Single-clicking on the unzoom button restores the window size.
|
||||
|
||||
|
||||
Dialog resize corner
|
||||
--------------------
|
||||
|
||||
If you click and drag the left mouse button in the lower right corner of the window, you can change the size of a resizable dialog.
|
||||
|
BIN
doc/newfont1.png
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
BIN
doc/newfont2.png
Before Width: | Height: | Size: 737 B After Width: | Height: | Size: 769 B |
Before Width: | Height: | Size: 788 B After Width: | Height: | Size: 843 B |
|
@ -1,8 +1,8 @@
|
|||
----------------------------------------------------------------------
|
||||
The Final Cut
|
||||
FINAL CUT
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Final Cut is a C++ class library and widget toolkit with full mouse
|
||||
The FINAL CUT is a C++ class library and widget toolkit with full mouse
|
||||
support for creating a text-based user interface. The library supports
|
||||
the programmer to develop an application for the text console. It allows
|
||||
the simultaneous handling of multiple text windows on the screen.
|
||||
|
@ -12,3 +12,50 @@ the C++ class design of FINAL CUT. It provides common controls like
|
|||
dialog boxes, push buttons, check boxes, radio buttons, input lines,
|
||||
list boxes, status bars and so on.
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
> git clone git://github.com/gansm/finalcut.git
|
||||
> cd finalcut
|
||||
> autoreconf --install --force
|
||||
> ./configure --prefix=/usr
|
||||
> make
|
||||
> su -c "make install"
|
||||
|
||||
|
||||
Supported platforms
|
||||
-------------------
|
||||
* Linux
|
||||
* FreeBSD
|
||||
* NetBSD
|
||||
* OpenBSD
|
||||
* macOS
|
||||
* Cygwin
|
||||
* Solaris
|
||||
|
||||
|
||||
First steps
|
||||
-----------
|
||||
See the first-steps.md documentation for information on how to use
|
||||
the library.
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
GNU Lesser General Public License Version 3
|
||||
|
||||
|
||||
Frequently Asked Questions
|
||||
--------------------------
|
||||
For general questions about FINAL CUT, likely the answer is already included in the faq.md.
|
||||
|
||||
|
||||
Download
|
||||
--------
|
||||
You can find the latest version at https://github.com/gansm/finalcut
|
||||
|
||||
|
||||
Please send bug reports to
|
||||
--------------------------
|
||||
https://github.com/gansm/finalcut/issues
|
||||
|
||||
|
|
BIN
doc/textview.png
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
@ -0,0 +1,330 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="43.074867"
|
||||
viewBox="0 0 509.50272 43.074862"
|
||||
width="509.50272"
|
||||
version="1.1"
|
||||
id="user-theme-own-palette"
|
||||
sodipodi:docname="user-theme-own-palette.svg"
|
||||
inkscape:version="0.92.1 r15371">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1984"
|
||||
id="namedview21"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="8.3138663"
|
||||
inkscape:cx="31.395854"
|
||||
inkscape:cy="8.1120765"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="55"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="user-theme-own-palette"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-center="true"
|
||||
inkscape:snap-bbox="true" />
|
||||
<metadata
|
||||
id="metadata">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs53" />
|
||||
<rect
|
||||
id="Black"
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="0.25" />
|
||||
<rect
|
||||
id="Blue"
|
||||
style="fill:#23212c;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="32.380764" />
|
||||
<rect
|
||||
id="Green"
|
||||
style="fill:#26937c;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="64.511536" />
|
||||
<rect
|
||||
id="Cyan"
|
||||
style="fill:#cfb3a8;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="96.642288" />
|
||||
<rect
|
||||
id="Red"
|
||||
style="fill:#ba1a1a;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="128.77304" />
|
||||
<rect
|
||||
id="Magenta"
|
||||
style="fill:#b218b2;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="160.90382" />
|
||||
<rect
|
||||
id="Brown"
|
||||
style="fill:#e8871f;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="193.03458" />
|
||||
<rect
|
||||
id="LightGray"
|
||||
style="fill:#fffbe4;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="225.16534" />
|
||||
<rect
|
||||
id="DarkGray"
|
||||
style="fill:#3a3637;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="257.29608" />
|
||||
<rect
|
||||
id="LightBlue"
|
||||
style="fill:#a5a5b1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="289.42688" />
|
||||
<rect
|
||||
id="LightGreen"
|
||||
style="fill:#5eeb5c;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="321.55765" />
|
||||
<rect
|
||||
id="LightCyan"
|
||||
style="fill:#62bff8;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="353.68842" />
|
||||
<rect
|
||||
id="LightRed"
|
||||
style="fill:#ee4444;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="385.81915" />
|
||||
<rect
|
||||
id="LightMagenta"
|
||||
style="fill:#e9adff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="417.94992" />
|
||||
<rect
|
||||
id="Yellow"
|
||||
style="fill:#f8efa6;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="450.08069" />
|
||||
<rect
|
||||
id="White"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="482.21146" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="13.822153"
|
||||
y="42.771538"
|
||||
id="0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4501"
|
||||
x="13.822153"
|
||||
y="42.771538">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="46.455204"
|
||||
y="42.852036"
|
||||
id="1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4633"
|
||||
x="46.455204"
|
||||
y="42.852036">1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="78.20282"
|
||||
y="42.852036"
|
||||
id="2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4635"
|
||||
x="78.20282"
|
||||
y="42.852036">2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="110.20156"
|
||||
y="42.771538"
|
||||
id="3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4637"
|
||||
x="110.20156"
|
||||
y="42.771538">3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="142.32588"
|
||||
y="42.852036"
|
||||
id="4"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4639"
|
||||
x="142.32588"
|
||||
y="42.852036">4</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="174.3343"
|
||||
y="42.687824"
|
||||
id="5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4641"
|
||||
x="174.3343"
|
||||
y="42.687824">5</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="206.51335"
|
||||
y="42.771538"
|
||||
id="6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4643"
|
||||
x="206.51335"
|
||||
y="42.771538">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="238.70207"
|
||||
y="42.768318"
|
||||
id="7"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4645"
|
||||
x="238.70207"
|
||||
y="42.768318">7</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="270.84891"
|
||||
y="42.768318"
|
||||
id="8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4647"
|
||||
x="270.84891"
|
||||
y="42.768318">8</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="303.04733"
|
||||
y="42.768318"
|
||||
id="9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4649"
|
||||
x="303.04733"
|
||||
y="42.768318">9</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="334.8851"
|
||||
y="42.771538"
|
||||
id="10"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4651"
|
||||
x="334.8851"
|
||||
y="42.771538">10</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="367.76285"
|
||||
y="42.852036"
|
||||
id="11"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4653"
|
||||
x="367.76285"
|
||||
y="42.852036">11</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="399.15305"
|
||||
y="42.852036"
|
||||
id="12"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4663"
|
||||
x="399.15305"
|
||||
y="42.852036">12</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="431.2355"
|
||||
y="42.771538"
|
||||
id="13"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4665"
|
||||
x="431.2355"
|
||||
y="42.771538">13</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="463.23425"
|
||||
y="42.852036"
|
||||
id="14"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4667"
|
||||
x="463.23425"
|
||||
y="42.852036">14</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="495.41333"
|
||||
y="42.771538"
|
||||
id="15"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4669"
|
||||
x="495.41333"
|
||||
y="42.771538">15</tspan></text>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,330 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="43.074867"
|
||||
viewBox="0 0 509.50272 43.074862"
|
||||
width="509.50272"
|
||||
version="1.1"
|
||||
id="user-theme-own-palette"
|
||||
sodipodi:docname="user-theme-own-palette.svg"
|
||||
inkscape:version="0.92.1 r15371">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1984"
|
||||
id="namedview21"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="8.3138663"
|
||||
inkscape:cx="31.395854"
|
||||
inkscape:cy="8.1120765"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="55"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="user-theme-own-palette"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-center="true"
|
||||
inkscape:snap-bbox="true" />
|
||||
<metadata
|
||||
id="metadata">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs53" />
|
||||
<rect
|
||||
id="Black"
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="0.25" />
|
||||
<rect
|
||||
id="Blue"
|
||||
style="fill:#4158b3;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="32.380764" />
|
||||
<rect
|
||||
id="Green"
|
||||
style="fill:#187818;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="64.511536" />
|
||||
<rect
|
||||
id="Cyan"
|
||||
style="fill:#4e6672;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="96.642288" />
|
||||
<rect
|
||||
id="Red"
|
||||
style="fill:#a54040;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="128.77304" />
|
||||
<rect
|
||||
id="Magenta"
|
||||
style="fill:#b218b2;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="160.90382" />
|
||||
<rect
|
||||
id="Brown"
|
||||
style="fill:#e8871f;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="193.03458" />
|
||||
<rect
|
||||
id="LightGray"
|
||||
style="fill:#dcdcdc;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="225.16534" />
|
||||
<rect
|
||||
id="DarkGray"
|
||||
style="fill:#273339;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="257.29608" />
|
||||
<rect
|
||||
id="LightBlue"
|
||||
style="fill:#b0b0b8;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="289.42688" />
|
||||
<rect
|
||||
id="LightGreen"
|
||||
style="fill:#5eeb5c;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="321.55765" />
|
||||
<rect
|
||||
id="LightCyan"
|
||||
style="fill:#62bff8;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="353.68842" />
|
||||
<rect
|
||||
id="LightRed"
|
||||
style="fill:#dd5145;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="385.81915" />
|
||||
<rect
|
||||
id="LightMagenta"
|
||||
style="fill:#e9adff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="417.94992" />
|
||||
<rect
|
||||
id="Yellow"
|
||||
style="fill:#fbe867;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="450.08069" />
|
||||
<rect
|
||||
id="White"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="482.21146" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="13.822153"
|
||||
y="42.771538"
|
||||
id="0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4501"
|
||||
x="13.822153"
|
||||
y="42.771538">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="46.455204"
|
||||
y="42.852036"
|
||||
id="1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4633"
|
||||
x="46.455204"
|
||||
y="42.852036">1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="78.20282"
|
||||
y="42.852036"
|
||||
id="2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4635"
|
||||
x="78.20282"
|
||||
y="42.852036">2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="110.20156"
|
||||
y="42.771538"
|
||||
id="3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4637"
|
||||
x="110.20156"
|
||||
y="42.771538">3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="142.32588"
|
||||
y="42.852036"
|
||||
id="4"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4639"
|
||||
x="142.32588"
|
||||
y="42.852036">4</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="174.3343"
|
||||
y="42.687824"
|
||||
id="5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4641"
|
||||
x="174.3343"
|
||||
y="42.687824">5</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="206.51335"
|
||||
y="42.771538"
|
||||
id="6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4643"
|
||||
x="206.51335"
|
||||
y="42.771538">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="238.70207"
|
||||
y="42.768318"
|
||||
id="7"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4645"
|
||||
x="238.70207"
|
||||
y="42.768318">7</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="270.84891"
|
||||
y="42.768318"
|
||||
id="8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4647"
|
||||
x="270.84891"
|
||||
y="42.768318">8</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="303.04733"
|
||||
y="42.768318"
|
||||
id="9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4649"
|
||||
x="303.04733"
|
||||
y="42.768318">9</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="334.8851"
|
||||
y="42.771538"
|
||||
id="10"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4651"
|
||||
x="334.8851"
|
||||
y="42.771538">10</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="367.76285"
|
||||
y="42.852036"
|
||||
id="11"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4653"
|
||||
x="367.76285"
|
||||
y="42.852036">11</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="399.15305"
|
||||
y="42.852036"
|
||||
id="12"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4663"
|
||||
x="399.15305"
|
||||
y="42.852036">12</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="431.2355"
|
||||
y="42.771538"
|
||||
id="13"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4665"
|
||||
x="431.2355"
|
||||
y="42.771538">13</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="463.23425"
|
||||
y="42.852036"
|
||||
id="14"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4667"
|
||||
x="463.23425"
|
||||
y="42.852036">14</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="495.41333"
|
||||
y="42.771538"
|
||||
id="15"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4669"
|
||||
x="495.41333"
|
||||
y="42.771538">15</tspan></text>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,330 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="43.074867"
|
||||
viewBox="0 0 509.50272 43.074862"
|
||||
width="509.50272"
|
||||
version="1.1"
|
||||
id="user-theme-own-palette"
|
||||
sodipodi:docname="user-theme-own-palette.svg"
|
||||
inkscape:version="0.92.1 r15371">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1984"
|
||||
id="namedview21"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="8.3138663"
|
||||
inkscape:cx="31.395854"
|
||||
inkscape:cy="8.1120765"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="55"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="user-theme-own-palette"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-center="true"
|
||||
inkscape:snap-bbox="true" />
|
||||
<metadata
|
||||
id="metadata">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs53" />
|
||||
<rect
|
||||
id="Black"
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="0.25" />
|
||||
<rect
|
||||
id="Blue"
|
||||
style="fill:#103b9e;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="32.380764" />
|
||||
<rect
|
||||
id="Green"
|
||||
style="fill:#187818;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="64.511536" />
|
||||
<rect
|
||||
id="Cyan"
|
||||
style="fill:#556acf;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="96.642288" />
|
||||
<rect
|
||||
id="Red"
|
||||
style="fill:#ba1a1a;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="128.77304" />
|
||||
<rect
|
||||
id="Magenta"
|
||||
style="fill:#b218b2;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="160.90382" />
|
||||
<rect
|
||||
id="Brown"
|
||||
style="fill:#e8871f;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="193.03458" />
|
||||
<rect
|
||||
id="LightGray"
|
||||
style="fill:#bcbcbc;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="225.16534" />
|
||||
<rect
|
||||
id="DarkGray"
|
||||
style="fill:#505050;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="257.29608" />
|
||||
<rect
|
||||
id="LightBlue"
|
||||
style="fill:#80a4ec;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="289.42688" />
|
||||
<rect
|
||||
id="LightGreen"
|
||||
style="fill:#5eeb5c;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="321.55765" />
|
||||
<rect
|
||||
id="LightCyan"
|
||||
style="fill:#62bff8;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="353.68842" />
|
||||
<rect
|
||||
id="LightRed"
|
||||
style="fill:#ee4444;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="385.81915" />
|
||||
<rect
|
||||
id="LightMagenta"
|
||||
style="fill:#e9adff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="417.94992" />
|
||||
<rect
|
||||
id="Yellow"
|
||||
style="fill:#fbe867;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="450.08069" />
|
||||
<rect
|
||||
id="White"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="482.21146" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="13.822153"
|
||||
y="42.771538"
|
||||
id="0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4501"
|
||||
x="13.822153"
|
||||
y="42.771538">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="46.455204"
|
||||
y="42.852036"
|
||||
id="1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4633"
|
||||
x="46.455204"
|
||||
y="42.852036">1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="78.20282"
|
||||
y="42.852036"
|
||||
id="2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4635"
|
||||
x="78.20282"
|
||||
y="42.852036">2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="110.20156"
|
||||
y="42.771538"
|
||||
id="3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4637"
|
||||
x="110.20156"
|
||||
y="42.771538">3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="142.32588"
|
||||
y="42.852036"
|
||||
id="4"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4639"
|
||||
x="142.32588"
|
||||
y="42.852036">4</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="174.3343"
|
||||
y="42.687824"
|
||||
id="5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4641"
|
||||
x="174.3343"
|
||||
y="42.687824">5</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="206.51335"
|
||||
y="42.771538"
|
||||
id="6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4643"
|
||||
x="206.51335"
|
||||
y="42.771538">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="238.70207"
|
||||
y="42.768318"
|
||||
id="7"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4645"
|
||||
x="238.70207"
|
||||
y="42.768318">7</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="270.84891"
|
||||
y="42.768318"
|
||||
id="8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4647"
|
||||
x="270.84891"
|
||||
y="42.768318">8</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="303.04733"
|
||||
y="42.768318"
|
||||
id="9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4649"
|
||||
x="303.04733"
|
||||
y="42.768318">9</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="334.8851"
|
||||
y="42.771538"
|
||||
id="10"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4651"
|
||||
x="334.8851"
|
||||
y="42.771538">10</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="367.76285"
|
||||
y="42.852036"
|
||||
id="11"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4653"
|
||||
x="367.76285"
|
||||
y="42.852036">11</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="399.15305"
|
||||
y="42.852036"
|
||||
id="12"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4663"
|
||||
x="399.15305"
|
||||
y="42.852036">12</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="431.2355"
|
||||
y="42.771538"
|
||||
id="13"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4665"
|
||||
x="431.2355"
|
||||
y="42.771538">13</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="463.23425"
|
||||
y="42.852036"
|
||||
id="14"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4667"
|
||||
x="463.23425"
|
||||
y="42.852036">14</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="495.41333"
|
||||
y="42.771538"
|
||||
id="15"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4669"
|
||||
x="495.41333"
|
||||
y="42.771538">15</tspan></text>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,194 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="43.074867"
|
||||
viewBox="0 0 252.45662 43.074862"
|
||||
width="252.45662"
|
||||
version="1.1"
|
||||
id="user-theme-own-palette"
|
||||
sodipodi:docname="user-theme-fc8-palette.svg"
|
||||
inkscape:version="0.92.1 r15371">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1984"
|
||||
id="namedview21"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="10.738479"
|
||||
inkscape:cx="126.22831"
|
||||
inkscape:cy="21.537433"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="55"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="user-theme-own-palette"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-center="true"
|
||||
inkscape:snap-bbox="true" />
|
||||
<metadata
|
||||
id="metadata">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs53" />
|
||||
<rect
|
||||
id="Black"
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="0.25" />
|
||||
<rect
|
||||
id="Blue"
|
||||
style="fill:#103b9e;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="32.380764" />
|
||||
<rect
|
||||
id="Green"
|
||||
style="fill:#187818;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="64.511536" />
|
||||
<rect
|
||||
id="Cyan"
|
||||
style="fill:#a0b2b2;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="96.642288" />
|
||||
<rect
|
||||
id="Red"
|
||||
style="fill:#b21818;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="128.77304" />
|
||||
<rect
|
||||
id="Magenta"
|
||||
style="fill:#b218b2;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="160.90382" />
|
||||
<rect
|
||||
id="Brown"
|
||||
style="fill:#e8871f;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="193.03458" />
|
||||
<rect
|
||||
id="LightGray"
|
||||
style="fill:#e0e0e0;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="225.16534" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="13.822153"
|
||||
y="42.771538"
|
||||
id="0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4501"
|
||||
x="13.822153"
|
||||
y="42.771538">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="46.455204"
|
||||
y="42.852036"
|
||||
id="1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4633"
|
||||
x="46.455204"
|
||||
y="42.852036">1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="78.20282"
|
||||
y="42.852036"
|
||||
id="2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4635"
|
||||
x="78.20282"
|
||||
y="42.852036">2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="110.20156"
|
||||
y="42.771538"
|
||||
id="3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4637"
|
||||
x="110.20156"
|
||||
y="42.771538">3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="142.32588"
|
||||
y="42.852036"
|
||||
id="4"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4639"
|
||||
x="142.32588"
|
||||
y="42.852036">4</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="174.3343"
|
||||
y="42.687824"
|
||||
id="5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4641"
|
||||
x="174.3343"
|
||||
y="42.687824">5</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="206.51335"
|
||||
y="42.771538"
|
||||
id="6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4643"
|
||||
x="206.51335"
|
||||
y="42.771538">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="238.70207"
|
||||
y="42.768318"
|
||||
id="7"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4645"
|
||||
x="238.70207"
|
||||
y="42.768318">7</tspan></text>
|
||||
</svg>
|
After Width: | Height: | Size: 6.8 KiB |
|
@ -0,0 +1,330 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="43.074867"
|
||||
viewBox="0 0 509.50272 43.074862"
|
||||
width="509.50272"
|
||||
version="1.1"
|
||||
id="user-theme-vga-palette"
|
||||
sodipodi:docname="user-theme-vga-palette.svg"
|
||||
inkscape:version="0.92.1 r15371">
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1984"
|
||||
id="namedview21"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="8.3138663"
|
||||
inkscape:cx="31.395854"
|
||||
inkscape:cy="8.1120765"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="55"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="user-theme-vga-palette"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-center="true"
|
||||
inkscape:snap-bbox="true" />
|
||||
<metadata
|
||||
id="metadata">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs53" />
|
||||
<rect
|
||||
id="Black"
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="0.25" />
|
||||
<rect
|
||||
id="Blue"
|
||||
style="fill:#0000aa;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="32.380764" />
|
||||
<rect
|
||||
id="Green"
|
||||
style="fill:#00aa00;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="64.511536" />
|
||||
<rect
|
||||
id="Cyan"
|
||||
style="fill:#00aaaa;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="96.642288" />
|
||||
<rect
|
||||
id="Red"
|
||||
style="fill:#aa0000;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="128.77304" />
|
||||
<rect
|
||||
id="Magenta"
|
||||
style="fill:#aa00aa;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="160.90382" />
|
||||
<rect
|
||||
id="Brown"
|
||||
style="fill:#aa5500;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="193.03458" />
|
||||
<rect
|
||||
id="LightGray"
|
||||
style="fill:#aaaaaa;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="225.16534" />
|
||||
<rect
|
||||
id="DarkGray"
|
||||
style="fill:#555555;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="257.29608" />
|
||||
<rect
|
||||
id="LightBlue"
|
||||
style="fill:#5555ff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="289.42688" />
|
||||
<rect
|
||||
id="LightGreen"
|
||||
style="fill:#55ff55;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="321.55765" />
|
||||
<rect
|
||||
id="LightCyan"
|
||||
style="fill:#55ffff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="353.68842" />
|
||||
<rect
|
||||
id="LightRed"
|
||||
style="fill:#ff5555;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="385.81915" />
|
||||
<rect
|
||||
id="LightMagenta"
|
||||
style="fill:#ff55ff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="417.94992" />
|
||||
<rect
|
||||
id="Yellow"
|
||||
style="fill:#ffff55;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="450.08069" />
|
||||
<rect
|
||||
id="White"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
height="27.725"
|
||||
width="27.041273"
|
||||
y="0.25"
|
||||
x="482.21146" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="13.822153"
|
||||
y="42.771538"
|
||||
id="0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4501"
|
||||
x="13.822153"
|
||||
y="42.771538">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="46.455204"
|
||||
y="42.852036"
|
||||
id="1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4633"
|
||||
x="46.455204"
|
||||
y="42.852036">1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="78.20282"
|
||||
y="42.852036"
|
||||
id="2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4635"
|
||||
x="78.20282"
|
||||
y="42.852036">2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="110.20156"
|
||||
y="42.771538"
|
||||
id="3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4637"
|
||||
x="110.20156"
|
||||
y="42.771538">3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="142.32588"
|
||||
y="42.852036"
|
||||
id="4"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4639"
|
||||
x="142.32588"
|
||||
y="42.852036">4</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="174.3343"
|
||||
y="42.687824"
|
||||
id="5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4641"
|
||||
x="174.3343"
|
||||
y="42.687824">5</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="206.51335"
|
||||
y="42.771538"
|
||||
id="6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4643"
|
||||
x="206.51335"
|
||||
y="42.771538">6</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="238.70207"
|
||||
y="42.768318"
|
||||
id="7"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4645"
|
||||
x="238.70207"
|
||||
y="42.768318">7</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="270.84891"
|
||||
y="42.768318"
|
||||
id="8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4647"
|
||||
x="270.84891"
|
||||
y="42.768318">8</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="303.04733"
|
||||
y="42.768318"
|
||||
id="9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4649"
|
||||
x="303.04733"
|
||||
y="42.768318">9</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="334.8851"
|
||||
y="42.771538"
|
||||
id="10"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4651"
|
||||
x="334.8851"
|
||||
y="42.771538">10</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="367.76285"
|
||||
y="42.852036"
|
||||
id="11"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4653"
|
||||
x="367.76285"
|
||||
y="42.852036">11</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="399.15305"
|
||||
y="42.852036"
|
||||
id="12"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4663"
|
||||
x="399.15305"
|
||||
y="42.852036">12</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="431.2355"
|
||||
y="42.771538"
|
||||
id="13"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4665"
|
||||
x="431.2355"
|
||||
y="42.771538">13</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="463.23425"
|
||||
y="42.852036"
|
||||
id="14"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4667"
|
||||
x="463.23425"
|
||||
y="42.852036">14</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-weight:bold;font-size:13.18826675px;line-height:125%;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
|
||||
x="495.41333"
|
||||
y="42.771538"
|
||||
id="15"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4669"
|
||||
x="495.41333"
|
||||
y="42.771538">15</tspan></text>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,448 @@
|
|||
User Themes
|
||||
===========
|
||||
|
||||
FINAL CUT supports color themes. That makes it possible to change the color
|
||||
of all elements of a widget in the program. Also, you can adjust the color
|
||||
palette to your preferences. If you want to switch back to the default
|
||||
themes, you can always call the method `FApplication::setDefaultTheme()`
|
||||
or `FApplication::setDarkTheme()` for the dark theme.
|
||||
|
||||
|
||||
Widget Color Theme
|
||||
------------------
|
||||
|
||||
FINAL CUT uses a default color scheme that the user can override in a
|
||||
derived class of `FWidgetColors`. All widget colors are redefined in the
|
||||
constructor by the method `setColorTheme()`.
|
||||
|
||||
```cpp
|
||||
class myWidgetColors final : public finalcut::FWidgetColors
|
||||
{
|
||||
public:
|
||||
myWidgetColors()
|
||||
{
|
||||
myWidgetColors::setColorTheme();
|
||||
}
|
||||
|
||||
~myWidgetColors() override
|
||||
{ }
|
||||
|
||||
finalcut::FString getClassName() const override
|
||||
{
|
||||
return "myWidgetColors";
|
||||
}
|
||||
|
||||
void myWidgetColors() override
|
||||
{
|
||||
... // Color definitions
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
For setting the widget colors, it is recommended to call the method
|
||||
`FWidget::setColorTheme()` via the `FApplication` object to create a
|
||||
new instance of the theme and assign it to the application.
|
||||
|
||||
```cpp
|
||||
finalcut::FApplication app(argc, argv);
|
||||
app.setColorTheme<myWidgetColors>();
|
||||
```
|
||||
|
||||
In the following example, we will create the `BeeColorTheme`. For this
|
||||
purpose, we will first create an include file that can be easily included
|
||||
later in your application.
|
||||
|
||||
**File:** *widget-color-theme.h*
|
||||
```cpp
|
||||
#ifndef WIDGETCOLORTHEME_H
|
||||
#define WIDGETCOLORTHEME_H
|
||||
|
||||
class BeeColorTheme final : public finalcut::FWidgetColors
|
||||
{
|
||||
public:
|
||||
BeeColorTheme()
|
||||
{
|
||||
BeeColorTheme::setColorTheme();
|
||||
}
|
||||
|
||||
~BeeColorTheme() override
|
||||
{ }
|
||||
|
||||
finalcut::FString getClassName() const override
|
||||
{
|
||||
return "BeeColorTheme";
|
||||
}
|
||||
|
||||
void setColorTheme() override
|
||||
{
|
||||
term_fg = finalcut::FColor::Black;
|
||||
term_bg = finalcut::FColor::LightBlue;
|
||||
list_fg = finalcut::FColor::Black;
|
||||
list_bg = finalcut::FColor::LightGray;
|
||||
selected_list_fg = finalcut::FColor::LightRed;
|
||||
selected_list_bg = finalcut::FColor::LightGray;
|
||||
dialog_fg = finalcut::FColor::Black;
|
||||
dialog_resize_fg = finalcut::FColor::Red;
|
||||
dialog_emphasis_fg = finalcut::FColor::Blue;
|
||||
dialog_bg = finalcut::FColor::LightGray;
|
||||
error_box_fg = finalcut::FColor::Black;
|
||||
error_box_emphasis_fg = finalcut::FColor::Red;
|
||||
error_box_bg = finalcut::FColor::Yellow;
|
||||
tooltip_fg = finalcut::FColor::Black;
|
||||
tooltip_bg = finalcut::FColor::Yellow;
|
||||
shadow_fg = finalcut::FColor::Black;
|
||||
shadow_bg = finalcut::FColor::LightGray;
|
||||
current_element_focus_fg = finalcut::FColor::White;
|
||||
current_element_focus_bg = finalcut::FColor::Green;
|
||||
current_element_fg = finalcut::FColor::LightGray;
|
||||
current_element_bg = finalcut::FColor::DarkGray;
|
||||
current_inc_search_element_fg = finalcut::FColor::Brown;
|
||||
selected_current_element_focus_fg = finalcut::FColor::LightRed;
|
||||
selected_current_element_focus_bg = finalcut::FColor::Green;
|
||||
selected_current_element_fg = finalcut::FColor::LightRed;
|
||||
selected_current_element_bg = finalcut::FColor::DarkGray;
|
||||
label_fg = finalcut::FColor::Black;
|
||||
label_bg = finalcut::FColor::LightGray;
|
||||
label_inactive_fg = finalcut::FColor::LightGray;
|
||||
label_inactive_bg = finalcut::FColor::DarkGray;
|
||||
label_hotkey_fg = finalcut::FColor::Red;
|
||||
label_hotkey_bg = finalcut::FColor::LightGray;
|
||||
label_emphasis_fg = finalcut::FColor::Blue;
|
||||
label_ellipsis_fg = finalcut::FColor::DarkGray;
|
||||
inputfield_active_focus_fg = finalcut::FColor::LightGray;
|
||||
inputfield_active_focus_bg = finalcut::FColor::Green;
|
||||
inputfield_active_fg = finalcut::FColor::Black;
|
||||
inputfield_active_bg = finalcut::FColor::Cyan ;
|
||||
inputfield_inactive_fg = finalcut::FColor::Black;
|
||||
inputfield_inactive_bg = finalcut::FColor::LightGray;
|
||||
toggle_button_active_focus_fg = finalcut::FColor::White;
|
||||
toggle_button_active_focus_bg = finalcut::FColor::Green;
|
||||
toggle_button_active_fg = finalcut::FColor::Black;
|
||||
toggle_button_active_bg = finalcut::FColor::LightGray;
|
||||
toggle_button_inactive_fg = finalcut::FColor::DarkGray;
|
||||
toggle_button_inactive_bg = finalcut::FColor::LightGray;
|
||||
button_active_focus_fg = finalcut::FColor::White;
|
||||
button_active_focus_bg = finalcut::FColor::Green;
|
||||
button_active_fg = finalcut::FColor::Black;
|
||||
button_active_bg = finalcut::FColor::Cyan;
|
||||
button_inactive_fg = finalcut::FColor::Cyan;
|
||||
button_inactive_bg = finalcut::FColor::LightGray;
|
||||
button_hotkey_fg = finalcut::FColor::Red;
|
||||
titlebar_active_fg = finalcut::FColor::White;
|
||||
titlebar_active_bg = finalcut::FColor::Blue;
|
||||
titlebar_inactive_fg = finalcut::FColor::LightGray;
|
||||
titlebar_inactive_bg = finalcut::FColor::DarkGray;
|
||||
titlebar_button_fg = finalcut::FColor::Black;
|
||||
titlebar_button_bg = finalcut::FColor::LightGray;
|
||||
titlebar_button_focus_fg = finalcut::FColor::LightGray;
|
||||
titlebar_button_focus_bg = finalcut::FColor::Black;
|
||||
menu_active_focus_fg = finalcut::FColor::White;
|
||||
menu_active_focus_bg = finalcut::FColor::Blue;
|
||||
menu_active_fg = finalcut::FColor::Black;
|
||||
menu_active_bg = finalcut::FColor::Yellow;
|
||||
menu_inactive_fg = finalcut::FColor::Cyan;
|
||||
menu_inactive_bg = finalcut::FColor::Yellow;
|
||||
menu_hotkey_fg = finalcut::FColor::Red;
|
||||
menu_hotkey_bg = finalcut::FColor::Yellow;
|
||||
statusbar_fg = finalcut::FColor::White;
|
||||
statusbar_bg = finalcut::FColor::DarkGray;
|
||||
statusbar_hotkey_fg = finalcut::FColor::LightRed;
|
||||
statusbar_hotkey_bg = finalcut::FColor::DarkGray;
|
||||
statusbar_separator_fg = finalcut::FColor::Black;
|
||||
statusbar_active_fg = finalcut::FColor::White;
|
||||
statusbar_active_bg = finalcut::FColor::Green;
|
||||
statusbar_active_hotkey_fg = finalcut::FColor::LightRed;
|
||||
statusbar_active_hotkey_bg = finalcut::FColor::Green;
|
||||
scrollbar_fg = finalcut::FColor::Black;
|
||||
scrollbar_bg = finalcut::FColor::Green;
|
||||
scrollbar_button_fg = finalcut::FColor::Black;
|
||||
scrollbar_button_bg = finalcut::FColor::Green;
|
||||
scrollbar_button_inactive_fg = finalcut::FColor::Cyan;
|
||||
scrollbar_button_inactive_bg = finalcut::FColor::LightGray;
|
||||
progressbar_fg = finalcut::FColor::Green;
|
||||
progressbar_bg = finalcut::FColor::DarkGray;
|
||||
}
|
||||
};
|
||||
|
||||
#endif // WIDGETCOLORTHEME_H
|
||||
```
|
||||
|
||||
|
||||
Color Palette Theme
|
||||
-------------------
|
||||
|
||||
FINAL CUT has four color tables for the 16 standard colors in the terminal.
|
||||
These are a redefinition of the 16 ANSI colors. You can address the colors
|
||||
via indexes values from 0 to 15. They correspond to the following colors:
|
||||
|
||||
| Index | Color name |
|
||||
|:------:|:-------------------------------|
|
||||
| 0 | finalcut::FColor::Black |
|
||||
| 1 | finalcut::FColor::Blue |
|
||||
| 2 | finalcut::FColor::Green |
|
||||
| 3 | finalcut::FColor::Cyan |
|
||||
| 4 | finalcut::FColor::Red |
|
||||
| 5 | finalcut::FColor::Magenta |
|
||||
| 6 | finalcut::FColor::Brown |
|
||||
| 7 | finalcut::FColor::LightGray |
|
||||
| 8 | finalcut::FColor::DarkGray |
|
||||
| 9 | finalcut::FColor::LightBlue |
|
||||
| 10 | finalcut::FColor::LightGreen |
|
||||
| 11 | finalcut::FColor::LightCyan |
|
||||
| 12 | finalcut::FColor::LightRed |
|
||||
| 13 | finalcut::FColor::LightMagenta |
|
||||
| 14 | finalcut::FColor::Yellow |
|
||||
| 15 | finalcut::FColor::White |
|
||||
|
||||
You can define your color as an 8-bit value based on its red, green, and
|
||||
blue components. To create a color palette, create a derived class of
|
||||
`FColorPalette`. The constructor gets as argument the function to set
|
||||
a palette color. This function must have the following structure:
|
||||
|
||||
```cpp
|
||||
setPalette(finalcut::FColor index, int red, int green, int blue);
|
||||
```
|
||||
|
||||
A possible implementation could look as follows:
|
||||
|
||||
```cpp
|
||||
class myColorPalette final : public finalcut::FColorPalette
|
||||
{
|
||||
public:
|
||||
explicit myColorPalette (const FSetPalette& f)
|
||||
: FColorPalette(f)
|
||||
{ }
|
||||
|
||||
~myColorPalette()
|
||||
{ }
|
||||
|
||||
finalcut::FString getClassName() const override
|
||||
{
|
||||
return "myColorPalette";
|
||||
}
|
||||
|
||||
void setColorPalette() override
|
||||
{
|
||||
... // Palette definitions
|
||||
}
|
||||
|
||||
void resetColorPalette() override
|
||||
{
|
||||
setVGAdefaultPalette();
|
||||
}
|
||||
};
|
||||
```
|
||||
To set the colors of a palette theme, you should use the method
|
||||
`FTerm::setColorPaletteTheme()`. This method creates a new instance and
|
||||
saves it in the `FTerm` object.
|
||||
|
||||
```cpp
|
||||
finalcut::FTerm::setColorPaletteTheme<myColorPalette>();
|
||||
```
|
||||
The standard VGA palette is part of the `FColorPalette` class. To set it,
|
||||
use the method `setVGAdefaultPalette()`. You can use it to reset the color
|
||||
palette of terminals that cannot reset to default values with escape
|
||||
sequences.
|
||||
<figure class="image">
|
||||
<img src="user-theme-vga-palette.svg" alt="VGA palette">
|
||||
<figcaption>Figure 1. VGA palette</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
The FINAL CUT eight-color palette `default8ColorPalette` is optimized for
|
||||
the eight-color widget theme `default8ColorTheme`. It is for terminals
|
||||
that cannot display more than eight colors.
|
||||
<figure class="image">
|
||||
<img src="user-theme-fc8-palette.svg" alt="FINAL CUT 8-color palette">
|
||||
<figcaption>Figure 2. FINAL CUT 8-color palette</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
The FINAL CUT palette `default16ColorPalette` is the default 16-color
|
||||
palette. It is optimized for the widget color theme `default16ColorTheme`.
|
||||
<figure class="image">
|
||||
<img src="user-theme-fc16-palette.svg" alt="FINAL CUT 16-color palette">
|
||||
<figcaption>Figure 3. FINAL CUT 16-color palette</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
The second 16-color palette in FINAL CUT is for the dark theme. It was
|
||||
adjusted for the widget color themes `default8ColorDarkTheme` and
|
||||
`default16ColorDarkTheme`.
|
||||
<figure class="image">
|
||||
<img src="user-theme-fc16-dark-palette.svg" alt="FINAL CUT 16-color dark palette">
|
||||
<figcaption>Figure 4. FINAL CUT 16-color dark palette</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
In the following example, we want to create the palette them
|
||||
`BeeColorPalette`. For this purpose, we generate an include file again,
|
||||
in which we implement the new palette class.
|
||||
<figure class="image">
|
||||
<img src="user-theme-bee-palette.svg" alt="Bee palette">
|
||||
<figcaption>Figure 6. Bee palette</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
**File:** *color-palette-theme.h*
|
||||
```cpp
|
||||
#ifndef BEECOLORPALETTE_H
|
||||
#define BEECOLORPALETTE_H
|
||||
|
||||
class BeeColorPalette final : public finalcut::FColorPalette
|
||||
{
|
||||
public:
|
||||
explicit BeeColorPalette (const FSetPalette& f)
|
||||
: FColorPalette(f)
|
||||
{ }
|
||||
|
||||
~BeeColorPalette()
|
||||
{ }
|
||||
|
||||
finalcut::FString getClassName() const override
|
||||
{
|
||||
return "BeeColorPalette";
|
||||
}
|
||||
|
||||
void setColorPalette() override
|
||||
{
|
||||
setPalette (finalcut::FColor::Black, 0x00, 0x00, 0x00);
|
||||
setPalette (finalcut::FColor::Blue, 0x23, 0x21, 0x2c);
|
||||
setPalette (finalcut::FColor::Green, 0x26, 0x93, 0x7c);
|
||||
setPalette (finalcut::FColor::Cyan, 0xcf, 0xb3, 0xa8);
|
||||
setPalette (finalcut::FColor::Red, 0xba, 0x1a, 0x1a);
|
||||
setPalette (finalcut::FColor::Magenta, 0xb2, 0x18, 0xb2);
|
||||
setPalette (finalcut::FColor::Brown, 0xe8, 0x87, 0x1f);
|
||||
setPalette (finalcut::FColor::LightGray, 0xff, 0xfb, 0xe4);
|
||||
setPalette (finalcut::FColor::DarkGray, 0x3a, 0x36, 0x37);
|
||||
setPalette (finalcut::FColor::LightBlue, 0xa5, 0xa5, 0xb1);
|
||||
setPalette (finalcut::FColor::LightGreen, 0x5e, 0xeb, 0x5c);
|
||||
setPalette (finalcut::FColor::LightCyan, 0x62, 0xbf, 0xf8);
|
||||
setPalette (finalcut::FColor::LightRed, 0xee, 0x44, 0x44);
|
||||
setPalette (finalcut::FColor::LightMagenta, 0xe9, 0xad, 0xff);
|
||||
setPalette (finalcut::FColor::Yellow, 0xf8, 0xef, 0xa6);
|
||||
setPalette (finalcut::FColor::White, 0xff, 0xff, 0xff);
|
||||
}
|
||||
|
||||
void resetColorPalette() override
|
||||
{
|
||||
setVGAdefaultPalette();
|
||||
}
|
||||
};
|
||||
|
||||
#endif // BEECOLORPALETTE_H
|
||||
```
|
||||
|
||||
|
||||
Use of Themes
|
||||
-------------
|
||||
|
||||
If you include the two include files above in your application, you can use
|
||||
the widget color theme and the color palette theme. In the main function of
|
||||
your application, the object instances of both classes are created and set.
|
||||
<figure class="image">
|
||||
<img src="user-theme.png" alt="User theme example">
|
||||
<figcaption>Figure 7. User theme example</figcaption>
|
||||
</figure>
|
||||
<br /><br />
|
||||
|
||||
**File:** *theme.cpp*
|
||||
```cpp
|
||||
#include <final/final.h>
|
||||
|
||||
#include "widget-color-theme.h"
|
||||
#include "color-palette-theme.h"
|
||||
|
||||
using namespace finalcut;
|
||||
|
||||
class dialogWidget final : public FDialog
|
||||
{
|
||||
public:
|
||||
explicit dialogWidget (FWidget* parent = nullptr)
|
||||
: FDialog{"Theming test application", parent}
|
||||
{
|
||||
Input.setLabelText("File name:");
|
||||
Input.setLabelOrientation(FLineEdit::LabelOrientation::Above);
|
||||
Input.setStatusbarMessage("Enter a file name");
|
||||
Browse.addCallback
|
||||
(
|
||||
"clicked",
|
||||
this, &dialogWidget::cb_FileBrowse
|
||||
);
|
||||
Apply.setStatusbarMessage("Apply settings");
|
||||
Quit.setStatusbarMessage("Exit the program");
|
||||
Quit.addCallback
|
||||
(
|
||||
"clicked",
|
||||
finalcut::getFApplication(),
|
||||
&finalcut::FApplication::cb_exitApp,
|
||||
this
|
||||
);
|
||||
Open.addCallback
|
||||
(
|
||||
"clicked",
|
||||
this, &dialogWidget::cb_FileBrowse
|
||||
);
|
||||
}
|
||||
|
||||
private:
|
||||
void initLayout()
|
||||
{
|
||||
setGeometry (FPoint{15, 5}, FSize{50, 9});
|
||||
Input.setGeometry (FPoint{2, 2}, FSize{39, 1});
|
||||
Browse.setGeometry (FPoint{43, 2}, FSize{4, 1});
|
||||
Apply.setGeometry (FPoint{24, 5}, FSize{10, 1});
|
||||
Quit.setGeometry (FPoint{37, 5}, FSize{10, 1});
|
||||
FDialog::initLayout();
|
||||
}
|
||||
|
||||
void cb_FileBrowse()
|
||||
{
|
||||
auto filename = FFileDialog::fileOpenChooser(this);
|
||||
|
||||
if ( ! filename.isEmpty() )
|
||||
{
|
||||
Input.setText(filename);
|
||||
Input.redraw();
|
||||
}
|
||||
}
|
||||
|
||||
FMenuBar Menubar{this};
|
||||
FMenu File{"&File", &Menubar};
|
||||
FMenuItem New{"&New", &File};
|
||||
FMenuItem Open{"&Open...", &File};
|
||||
FMenu Edit{"&Edit", &Menubar};
|
||||
FMenuItem Undo{"&Undo", &Edit};
|
||||
FMenu Help{"&Help", &Menubar};
|
||||
FMenuItem About{"&About", &Help};
|
||||
FStatusBar Statusbar{this};
|
||||
FLineEdit Input{"input...", this};
|
||||
FButton Browse{"..", this};
|
||||
FButton Apply{"&Apply", this};
|
||||
FButton Quit{"&Quit", this};
|
||||
};
|
||||
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
FApplication app(argc, argv);
|
||||
|
||||
// Set the widget color theme
|
||||
app.setColorTheme<BeeColorTheme>();
|
||||
|
||||
// Set the color palette theme
|
||||
FTerm::setColorPaletteTheme<BeeColorPalette>();
|
||||
|
||||
dialogWidget dialog(&app);
|
||||
FWidget::setMainWidget(&dialog);
|
||||
dialog.show();
|
||||
return app.exec();
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
After entering the source code in *theme.cpp* you can compile
|
||||
the above program with gcc:
|
||||
```bash
|
||||
g++ theme.cpp -o theme -O2 -lfinal -std=c++11
|
||||
```
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -0,0 +1,517 @@
|
|||
3C0h: Attribute Controller: Address register
|
||||
bit 0-4 Address of data register to write to port 3C0h or read from port 3C1h
|
||||
(Reads only on VGA).
|
||||
5 If set screen output is enabled and the palette can not be modified,
|
||||
if clear screen output is disabled and the palette can be modified.
|
||||
|
||||
|
||||
Port 3C0h is special in that it is both address and data-write register.
|
||||
Data reads happen from port 3C1h. An internal flip-flop remembers whether it
|
||||
is currently acting as address or data register.
|
||||
Accesses to the attribute controller must be separated by at least 250ns.
|
||||
Reading port 3dAh will reset the flip-flop to address mode.
|
||||
|
||||
|
||||
3C0h index 0-Fh (r/W): Attribute: Palette
|
||||
bit 0 (EGA) Primary Blue
|
||||
1 (EGA) Primary Green
|
||||
2 (EGA) Primary Red
|
||||
3 (EGA) Secondary Blue
|
||||
4 (EGA) Secondary Green
|
||||
5 (EGA) Secondary Red
|
||||
0-5 (VGA) Index into the 256 color DAC table.
|
||||
May be modified by 3C0h index 10h and 14h.
|
||||
|
||||
3C0h index 10h (r/W): Attribute: Mode Control Register
|
||||
bit 0 Graphics mode if set, Alphanumeric mode else.
|
||||
1 Monochrome mode if set, color mode else.
|
||||
2 9-bit wide characters if set.
|
||||
The 9th bit of characters C0h-DFh will be the same as
|
||||
the 8th bit. Otherwise it will be the background color.
|
||||
3 If set Attribute bit 7 is blinking, else high intensity.
|
||||
5 (VGA Only) If set the PEL panning register (3C0h index 13h) is
|
||||
temporarily set to 0 from when the line compare causes a wrap around
|
||||
until the next vertical retrace when the register is automatically
|
||||
reloaded with the old value, else the PEL panning register ignores
|
||||
line compares.
|
||||
6 (VGA Only) If set pixels are 8 bits wide. Used in 256 color modes.
|
||||
7 (VGA Only) If set bit 4-5 of the index into the DAC table are taken
|
||||
from port 3C0h index 14h bit 0-1, else the bits in the palette
|
||||
register are used.
|
||||
|
||||
3C0h index 11h (r/W): Attribute: Overscan Color Register.
|
||||
bit 0-5 Color of screen border. Color is defined as in the palette registers.
|
||||
Note: The EGA requires the Overscan color to be 0 in high resolution modes.
|
||||
|
||||
3C0h index 12h (r/W): Attribute: Color Plane Enable Register
|
||||
bit 0 Bit plane 0 is enabled if set.
|
||||
1 Bit plane 1 is enabled if set.
|
||||
2 Bit plane 2 is enabled if set.
|
||||
3 Bit plane 3 is enabled if set.
|
||||
4-5 Video Status MUX. Diagnostics use only.
|
||||
Two attribute bits appear on bits 4 and 5 of the Input
|
||||
Status Register 1 (3dAh).
|
||||
Value EGA VGA
|
||||
0 Red/Blue Bit 2/Bit 0
|
||||
1 Blue'/Green Bit 5/Bit 4
|
||||
2 Red'/Green' Bit 3/Bit 1
|
||||
3 Bit 7/Bit 6
|
||||
|
||||
3C0h index 13h (r/W): Attribute: Horizontal PEL Panning Register
|
||||
bit 0-3 Indicates number of pixels to shift the display left
|
||||
Value 9bit textmode 256color mode Other modes
|
||||
0 1 0 0
|
||||
1 2 n/a 1
|
||||
2 3 1 2
|
||||
3 4 n/a 3
|
||||
4 5 2 4
|
||||
5 6 n/a 5
|
||||
6 7 3 6
|
||||
7 8 n/a 7
|
||||
8 0 n/a n/a
|
||||
|
||||
3C0h index 14h (r/W): Attribute: Color Select Register (VGA Only)
|
||||
bit 0-1 If 3C0h index 10h bit 7 is set these 2 bits are used as bits 4-5 of
|
||||
the index into the DAC table.
|
||||
2-3 These 2 bits are used as bit 6-7 of the index into the DAC table
|
||||
except in 256 color mode.
|
||||
Note: this register does not affect 256 color modes.
|
||||
|
||||
3C2h (R): Input Status #0 Register
|
||||
bit 4 Status of the switch selected by the Miscellaneous Output
|
||||
Register 3C2h bit 2-3. Switch high if set.
|
||||
5 (EGA Only) Pin 19 of the Feature Connector (FEAT0) is high if set
|
||||
6 (EGA Only) Pin 17 of the Feature Connector (FEAT1) is high if set
|
||||
7 (EGA Only ??) If set IRQ 2 has happened due to Vertical Retrace.
|
||||
Should be cleared by IRQ 2 interrupt routine by clearing port 3d4h
|
||||
index 11h bit 4.
|
||||
|
||||
3C2h (W): Miscellaneous Output Register
|
||||
bit 0 If set Color Emulation. Base Address=3Dxh else Mono Emulation. Base
|
||||
Address=3Bxh.
|
||||
1 Enable CPU Access to video memory if set
|
||||
2-3 Clock Select
|
||||
0: 14MHz(EGA) 25MHz(VGA)
|
||||
1: 16MHz(EGA) 28MHz(VGA)
|
||||
2: External(EGA) Reserved(VGA)
|
||||
4 (EGA Only) Disable internal video drivers if set
|
||||
5 When in Odd/Even modes Select High 64k bank if set
|
||||
6 Horizontal Sync Polarity. Negative if set
|
||||
7 Vertical Sync Polarity. Negative if set
|
||||
Bit 6-7 indicates the number of lines on the display:
|
||||
0=200(EGA) Reserved(VGA)
|
||||
1= 400(VGA)
|
||||
2=350(EGA) 350(VGA)
|
||||
3= 480(VGA).
|
||||
Note: Set to all zero on a hardware reset.
|
||||
Note: On the VGA this register can be read from port 3CCh.
|
||||
|
||||
3C3h (W): Video Subsystem Enable Register
|
||||
bit 0 Enables the VGA display if set
|
||||
|
||||
3C4h index 0 (r/W): Sequencer: Reset
|
||||
bit 0 (EGA) Asynchronous Reset if clear
|
||||
0 (VGA) Synchronous Reset just as bit 1
|
||||
1 Synchronous Reset if clear
|
||||
|
||||
3C4h index 1 (r/W): Sequencer: Clocking Mode
|
||||
bit 0 If set character clocks are 8 dots wide, else 9.
|
||||
1 (EGA Only) If set the CRTC uses 2/5 of the clock cycles, else 4/5.
|
||||
2 If set loads video serializers every other character
|
||||
clock cycle, else every one.
|
||||
3 If set the Dot Clock is Master Clock/2, else same as
|
||||
Master Clock (See 3C2h bit 2-3). (Doubles pixels).
|
||||
4 (VGA Only) If set loads video serializers every fourth character
|
||||
clock cycle, else every one.
|
||||
5 (VGA Only) if set turns off screen and gives all memory cycles to the
|
||||
CPU interface.
|
||||
|
||||
3C4h index 2 (r/W): Sequencer: Map Mask Register
|
||||
bit 0 Enable writes to plane 0 if set
|
||||
1 Enable writes to plane 1 if set
|
||||
2 Enable writes to plane 2 if set
|
||||
3 Enable writes to plane 3 if set
|
||||
|
||||
3C4h index 3 (r/W): Sequencer: Character Map Select Register
|
||||
bit 0-1 (EGA) Selects EGA Character Map (0..3) if bit 3 of the character
|
||||
attribute is clear.
|
||||
2-3 (EGA) Selects EGA Character Map (0..3) if bit 3 of the character
|
||||
attribute is set.
|
||||
0,1,4 (VGA) Selects VGA Character Map (0..7) if bit 3 of the character
|
||||
attribute is clear.
|
||||
2,3,5 (VGA) Selects VGA Character Map (0..7) if bit 3 of the character
|
||||
attribute is set.
|
||||
Note: Character Maps are placed at:
|
||||
Map no. (EGA/VGA) Map no. (VGA)
|
||||
0 0k 4 8k
|
||||
1 16k 5 24k
|
||||
2 32k 6 40k
|
||||
3 48k 7 56k
|
||||
|
||||
3C4h index 4 (r/W): Sequencer: Memory Mode Register
|
||||
bit 0 Set if in an alphanumeric mode, clear in graphics modes.
|
||||
1 Set if more than 64kbytes on the adapter.
|
||||
2 Enables Odd/Even addressing mode if set. Odd/Even mode places all odd
|
||||
bytes in plane 1&3, and all even bytes in plane 0&2.
|
||||
3 (VGA Only) If set address bit 0-1 selects video memory planes
|
||||
(256 color mode), rather than the Map Mask and Read Map Select
|
||||
Registers.
|
||||
|
||||
3C4h index 7 (R/W): Sequencer Horizontal Character Counter Reset Register.
|
||||
(VGA Only)
|
||||
Note: Undocumented by IBM. May not be available in all clones.
|
||||
A write to this register will cause the Horizontal Character Counter
|
||||
to be held reset (=0) until a write happens to any of the Sequencer
|
||||
registers index 0..6.
|
||||
The Vertical Line counter is clocked by a signal derived from the
|
||||
Horizontal Display Enable (which does not occur if the Horizontal
|
||||
Character Counter is held reset).
|
||||
Thus a write to index 7 during Vertical Retrace can stop the display
|
||||
timing and allow software to start the next frame reasonably
|
||||
synchronous to an external event.
|
||||
|
||||
3C6h (R/W): PEL Mask (VGA Only)
|
||||
bit 0-7 This register is anded with the palette index sent for each dot.
|
||||
Should be set to FFh.
|
||||
|
||||
3C7h (R): DAC State Register (VGA Only)
|
||||
bit 0-1 0 indicates the DAC is in Read Mode and 3 indicates write mode.
|
||||
|
||||
3C7h (W): PEL Address Read Mode (VGA Only)
|
||||
bit 0-7 The PEL data register (0..255) to be read from 3C9h.
|
||||
Note: After reading the 3 bytes at 3C9h this register will increment,
|
||||
pointing to the next data register.
|
||||
|
||||
3C8h (R/W): PEL Address Write Mode (VGA Only)
|
||||
bit 0-7 The PEL data register (0..255) to be written to 3C9h.
|
||||
Note: After writing the 3 bytes at 3C9h this register will increment, pointing
|
||||
to the next data register.
|
||||
|
||||
3C9h (R/W): PEL Data Register (VGA Only)
|
||||
bit 0-5 Color value
|
||||
Note: Each read or write of this register will cycle through first the
|
||||
registers for Red, Blue and Green, then increment the appropriate
|
||||
address register, thus the entire palette can be loaded by writing 0 to
|
||||
the PEL Address Write Mode register 3C8h and then writing all 768 bytes
|
||||
of the palette to this register.
|
||||
|
||||
3CAh (R): Feature Control Register (VGA Only)
|
||||
Bit 3 Vertical Sync Select. If set Vertical Sync to the monitor is the
|
||||
logical OR of the vertical sync and the vertical display enable.
|
||||
Note: This register is written to port 3dAh and read from 3CAh.
|
||||
|
||||
3CAh (W): Graphics 2 Position (EGA Only)
|
||||
bit 0-1 Select which bit planes should be controlled by Graphics Controller
|
||||
#2. Always set to 1.
|
||||
|
||||
3CCh (R): Miscellaneous Output Register (VGA Only)
|
||||
bit 0 If set Color Emulation. Base Address=3Dxh else Mono Emulation. Base
|
||||
Address=3Bxh.
|
||||
1 Enable CPU Access to video memory if set
|
||||
2-3 Clock Select. 0= 25MHz, 1= 28MHz, 2= Reserved
|
||||
5 When in Odd/Even modes Select High 64k bank if set
|
||||
6 Horizontal Sync Polarity. Negative if set
|
||||
7 Vertical Sync Polarity. Negative if set
|
||||
Bit 6-7 indicates the number of lines on the display:
|
||||
0=Reserved, 1=400, 2=350, 3=480.
|
||||
Note: This register is written to port 3C2h and read from port 3CCh.
|
||||
|
||||
3CCh (W): Graphics 1 Position (EGA Only)
|
||||
bit 0-1 Select which bit planes should be controlled by Graphics Controller
|
||||
#1. Always set to 0.
|
||||
|
||||
3CEh index 0 (r/W): Graphics: Set/Reset Register
|
||||
bit 0 If in Write Mode 0 and bit 0 of 3CEh index 1 is set a write to
|
||||
display memory will set all the bits in plane 0 of the byte to this
|
||||
bit, if the corresponding bit is set in the Map Mask Register (3CEh
|
||||
index 8).
|
||||
1 Same for plane 1 and bit 1 of 3CEh index 1.
|
||||
2 Same for plane 2 and bit 2 of 3CEh index 1.
|
||||
3 Same for plane 3 and bit 3 of 3CEh index 1.
|
||||
|
||||
3CEh index 1 (r/W): Graphics: Enable Set/Reset Register
|
||||
bit 0 If set enables Set/reset of plane 0 in Write Mode 0.
|
||||
1 Same for plane 1.
|
||||
2 Same for plane 2.
|
||||
3 Same for plane 3.
|
||||
|
||||
3CEh index 2 (r/W): Graphics: Color Compare Register
|
||||
bit 0-3 In Read Mode 1 each pixel at the address of the byte read is compared
|
||||
to this color and the corresponding bit in the output set to 1 if
|
||||
they match, 0 if not. The Color Don't Care Register (3CEh index 7)
|
||||
can exclude bitplanes from the comparison.
|
||||
|
||||
3CEh index 3 (r/W): Graphics: Data Rotate
|
||||
bit 0-2 Number of positions to rotate data right before it is written to
|
||||
display memory. Only active in Write Mode 0.
|
||||
3-4 In Write Mode 2 this field controls the relation between the data
|
||||
written from the CPU, the data latched from the previous read and the
|
||||
data written to display memory:
|
||||
0: CPU Data is written unmodified
|
||||
1: CPU data is ANDed with the latched data
|
||||
2: CPU data is ORed with the latch data.
|
||||
3: CPU data is XORed with the latched data.
|
||||
|
||||
3CEh index 4 (r/W): Graphics: Read Map Select Register
|
||||
bit 0-1 Number of the plane Read Mode 0 will read from.
|
||||
|
||||
3CEh index 5 (r/W): Graphics: Mode Register
|
||||
bit 0-1 Write Mode: Controls how data from the CPU is transformed before
|
||||
being written to display memory:
|
||||
0: Mode 0 works as a Read-Modify-Write operation.
|
||||
First a read access loads the data latches of the EGA/VGA with
|
||||
the value in video memory at the addressed location. Then a
|
||||
write access will provide the destination address and the CPU
|
||||
data byte. The data written is modified by the function code in
|
||||
the Data Rotate register (3CEh index 3) as a function of the CPU
|
||||
data and the latches, then data is rotated as specified by the
|
||||
same register.
|
||||
1: Mode 1 is used for video to video transfers.
|
||||
A read access will load the data latches with the contents of
|
||||
the addressed byte of video memory. A write access will write
|
||||
the contents of the latches to the addressed byte. Thus a single
|
||||
MOVSB instruction can copy all pixels in the source address byte
|
||||
to the destination address.
|
||||
2: Mode 2 writes a color to all pixels in the addressed byte of
|
||||
video memory. Bit 0 of the CPU data is written to plane 0 et
|
||||
cetera. Individual bits can be enabled or disabled through the
|
||||
Bit Mask register (3CEh index 8).
|
||||
3: (VGA Only) Mode 3 can be used to fill an area with a color and
|
||||
pattern. The CPU data is rotated according to 3CEh index 3 bits
|
||||
0-2 and anded with the Bit Mask Register (3CEh index 8). For
|
||||
each bit in the result the corresponding pixel is set to the
|
||||
color in the Set/Reset Register (3CEh index 0 bits 0-3) if the
|
||||
bit is set and to the contents of the processor latch if the bit
|
||||
is clear.
|
||||
2 (EGA Only) Forces all outputs to a high impedance state if set.
|
||||
3 Read Mode
|
||||
0: Data is read from one of 4 bit planes depending on the Read Map
|
||||
Select Register (3CEh index 4).
|
||||
1: Data returned is a comparison between the 8 pixels occupying the
|
||||
read byte and the color in the Color Compare Register (3CEh
|
||||
index 2). A bit is set if the color of the corresponding pixel
|
||||
matches the register.
|
||||
4 Enables Odd/Even mode if set (See 3C4h index 4 bit 2).
|
||||
5 Enables CGA style 4 color pixels using even/odd bit pairs if set.
|
||||
6 (VGA Only) Enables 256 color mode if set.
|
||||
|
||||
3CEh index 6 (r/W): Graphics: Miscellaneous Register
|
||||
bit 0 Indicates Graphics Mode if set, Alphanumeric mode else.
|
||||
1 Enables Odd/Even mode if set.
|
||||
2-3 Memory Mapping:
|
||||
0: use A000h-BFFFh
|
||||
1: use A000h-AFFFh EGA/VGA Graphics modes
|
||||
2: use B000h-B7FFh Monochrome modes
|
||||
3: use B800h-BFFFh CGA modes
|
||||
|
||||
3CEh index 7 (r/W): Graphics: Color Don't Care Register
|
||||
bit 0 Ignore bit plane 0 in Read mode 1 if clear.
|
||||
1 Ignore bit plane 1 in Read mode 1 if clear.
|
||||
2 Ignore bit plane 2 in Read mode 1 if clear.
|
||||
3 Ignore bit plane 3 in Read mode 1 if clear.
|
||||
|
||||
3CEh index 8 (r/W): Graphics: Bit Mask Register
|
||||
bit 0-7 Each bit if set enables writing to the corresponding bit of a byte in
|
||||
display memory.
|
||||
|
||||
3d4h index 0 (r/W): CRTC: Horizontal Total Register
|
||||
bit 0-7 (EGA) Horizontal Total Character Clocks-2
|
||||
0-7 (VGA) Horizontal Total Character Clocks-5
|
||||
|
||||
3d4h index 1 (r/W): CRTC: Horizontal Display End Register
|
||||
bit 0-7 Number of Character Clocks Displayed -1
|
||||
|
||||
3d4h index 2 (r/W): CRTC: Start Horizontal Blanking Register
|
||||
bit 0-7 The count at which Horizontal Blanking starts
|
||||
|
||||
3d4h index 3 (r/W): CRTC: End Horizontal Blanking Register
|
||||
bit 0-4 Horizontal Blanking ends when the last 5 (6 for VGA) bits of the
|
||||
character counter equals this field.
|
||||
(VGA) The sixth bit is found in port 3d4h index 5 bit 7.
|
||||
5-6 Number of character clocks to delay start of display after Horizontal
|
||||
Total has been reached.
|
||||
7 (VGA Only) Access to Vertical Retrace registers if set. If clear
|
||||
reads to 3d4h index 10h and 11h access the Lightpen read back
|
||||
registers ??
|
||||
|
||||
3d4h index 4 (r/W): CRTC: Start Horizontal Retrace Register
|
||||
bit 0-7 Horizontal Retrace starts when the Character Counter reaches this
|
||||
value.
|
||||
|
||||
3d4h index 5 (r/W): CRTC: End Horizontal Retrace Register
|
||||
bit 0-4 Horizontal Retrace ends when the last 5 bits of the character counter
|
||||
equals this value.
|
||||
5-6 Number of character clocks to delay start of display after Horizontal
|
||||
Retrace.
|
||||
7 (EGA) Provides Smooth Scrolling in Odd/Even mode. When set display
|
||||
starts from an odd byte.
|
||||
7 (VGA) bit 5 of the End Horizontal Blanking count (See 3d4h index 3
|
||||
bit 0-4).
|
||||
|
||||
3d4h index 6 (r/W): CRTC: Vertical Total Register
|
||||
bit 0-7 Lower 8 bits of the Vertical Total. Bit 8 is found in 3d4h index 7
|
||||
bit 0. (VGA) Bit 9 is found in 3d4h index 7 bit 5.
|
||||
Note: For the VGA this value is the number of scan lines in the display -2.
|
||||
|
||||
3d4h index 7 (r/W): CRTC: Overflow Register
|
||||
bit 0 Bit 8 of Vertical Total (3d4h index 6)
|
||||
1 Bit 8 of Vertical Display End (3d4h index 12h)
|
||||
2 Bit 8 of Vertical Retrace Start (3d4h index 10h)
|
||||
3 Bit 8 of Start Vertical Blanking (3d4h index 15h)
|
||||
4 Bit 8 of Line Compare Register (3d4h index 18h)
|
||||
5 (VGA) Bit 9 of Vertical Total (3d4h index 6)
|
||||
6 (VGA) Bit 9 of Vertical Display End (3d4h index 12h)
|
||||
7 (VGA) Bit 9 of Vertical Retrace Start (3d4h index 10h)
|
||||
|
||||
3d4h index 8 (r/W): CRTC: Preset Row Scan Register
|
||||
bit 0-4 Number of lines we have scrolled down in the first character row.
|
||||
Provides Smooth Vertical Scrolling.
|
||||
5-6 (VGA Only) Number of bytes to skip at the start of scanline. Provides
|
||||
Smooth Horizontal Scrolling together with the Horizontal Panning
|
||||
Register (3C0h index 13h).
|
||||
|
||||
3d4h index 9 (r/W): CRTC: Maximum Scan Line Register
|
||||
bit 0-4 Number of scan lines in a character row -1. In graphics modes this is
|
||||
the number of times (-1) the line is displayed before passing on to
|
||||
the next line (0: normal, 1: double, 2: triple...).
|
||||
This is independent of bit 7, except in CGA modes which seems to
|
||||
require this field to be 1 and bit 7 to be set to work.
|
||||
5 (VGA) Bit 9 of Start Vertical Blanking
|
||||
6 (VGA) Bit 9 of Line Compare Register
|
||||
7 (VGA) Doubles each scan line if set.
|
||||
I.e. displays 200 lines on a 400 display.
|
||||
|
||||
3d4h index Ah (r/W): CRTC: Cursor Start Register
|
||||
bit 0-4 First scanline of cursor within character.
|
||||
5 (VGA) Turns Cursor off if set
|
||||
|
||||
3d4h index Bh (r/W): CRTC: Cursor End Register
|
||||
bit 0-4 Last scanline of cursor within character
|
||||
5-6 Delay of cursor data in character clocks.
|
||||
|
||||
3d4h index Ch (r/W): CRTC: Start Address High Register
|
||||
bit 0-7 Upper 8 bits of the start address of the display buffer
|
||||
|
||||
3d4h index Dh (r/W): CRTC: Start Address Low Register
|
||||
bit 0-7 Lower 8 bits of the start address of the display buffer
|
||||
|
||||
3d4h index Eh (r/W): CRTC: Cursor Location High Register
|
||||
bit 0-7 Upper 8 bits of the address of the cursor
|
||||
|
||||
3d4h index Fh (r/W): CRTC: Cursor Location Low Register
|
||||
bit 0-7 Lower 8 bits of the address of the cursor
|
||||
|
||||
3d4h index 10h (R): CRTC: Light Pen High Register (EGA Only)
|
||||
bit 0-7 (EGA Only) Upper 8 bits of the address of the lightpen position.
|
||||
|
||||
3d4h index 10h (r/W): CRTC: Vertical Retrace Start Register
|
||||
bit 0-7 Lower 8 bits of Vertical Retrace Start. Vertical Retrace starts when
|
||||
the line counter reaches this value. Bit 8 is found in 3d4h index 7
|
||||
bit 2. (VGA Only) Bit 9 is found in 3d4h index 7 bit 7.
|
||||
|
||||
3d4h index 11h (R): CRTC: Light Pen Low Register (EGA Only)
|
||||
bit 0-7 (EGA Only) Lower 8 bits of the address of the lightpen position.
|
||||
|
||||
3d4h index 11h (r/W): CRTC: Vertical Retrace End Register
|
||||
bit 0-3 Vertical Retrace ends when the last 4 bits of the line counter equals
|
||||
this value.
|
||||
4 if clear Clears pending Vertical Interrupts.
|
||||
5 Vertical Interrupts (IRQ 2) disabled if set. Can usually be left
|
||||
disabled, but some systems (including PS/2) require it to be enabled.
|
||||
6 (VGA Only) If set selects 5 refresh cycles per scanline rather
|
||||
than 3.
|
||||
7 (VGA Only) Disables writing to registers 0-7 if set 3d4h index 7
|
||||
bit 4 is not affected by this bit.
|
||||
|
||||
3d4h index 12h (r/W): CRTC: Vertical Display End Register
|
||||
bit 0-7 Lower 8 bits of Vertical Display End. The display ends when the line
|
||||
counter reaches this value. Bit 8 is found in 3d4h index 7 bit 1.
|
||||
(VGA Only) Bit 9 is found in 3d4h index 7 bit 6.
|
||||
|
||||
3d4h index 13h (r/W): CRTC: Offset register
|
||||
bit 0-7 Number of bytes in a scanline / K. Where K is 2 for byte mode, 4 for
|
||||
word mode and 8 for Double Word mode.
|
||||
|
||||
3d4h index 14h (r/W): CRTC: Underline Location Register
|
||||
bit 0-4 Position of underline within Character cell.
|
||||
5 (VGA Only) If set memory address is only changed every fourth
|
||||
character clock.
|
||||
6 (VGA Only) Double Word mode addressing if set
|
||||
|
||||
3d4h index 15h (r/W): CRTC: Start Vertical Blank Register
|
||||
bit 0-7 Lower 8 bits of Vertical Blank Start. Vertical blanking starts when
|
||||
the line counter reaches this value. Bit 8 is found in 3d4h index 7
|
||||
bit 3.
|
||||
|
||||
3d4h index 16h (r/W): CRTC: End Vertical Blank Register
|
||||
bit 0-4 (EGA) Vertical blanking stops when the lower 5 bits of the line
|
||||
counter equals this field.
|
||||
0-6 (VGA) Vertical blanking stops when the lower 7 bits of the line
|
||||
counter equals this field.
|
||||
|
||||
3d4h index 17h (r/W): CRTC: Mode Control Register
|
||||
bit 0 If clear use CGA compatible memory addressing system
|
||||
by substituting character row scan counter bit 0 for address bit 13,
|
||||
thus creating 2 banks for even and odd scan lines.
|
||||
1 If clear use Hercules compatible memory addressing system by
|
||||
substituting character row scan counter bit 1 for address bit 14,
|
||||
thus creating 4 banks.
|
||||
2 If set increase scan line counter only every second line.
|
||||
3 If set increase memory address counter only every other character
|
||||
clock.
|
||||
4 (EGA Only) If set disable the EGA output drivers. This bit is used
|
||||
for other purposes in some Super VGA chips.
|
||||
5 When in Word Mode bit 15 is rotated to bit 0 if this bit is set else
|
||||
bit 13 is rotated into bit 0.
|
||||
6 If clear system is in word mode. Addresses are rotated 1 position up
|
||||
bringing either bit 13 or 15 into bit 0.
|
||||
7 Clearing this bit will reset the display system until the bit is set
|
||||
again.
|
||||
|
||||
3d4h index 18h (r/W): CRTC: Line Compare Register
|
||||
bit 0-7 Lower 8 bits of the Line Compare. When the Line counter reaches this
|
||||
value, the display address wraps to 0. Provides Split Screen
|
||||
facilities. Bit 8 is found in 3d4h index 7 bit 4.
|
||||
(VGA Only) Bit 9 is found in 3d4h index 9 bit 6.
|
||||
|
||||
3d4h index 22h (R): Memory Latch Register (VGA - Undoc)
|
||||
bit 0-7 Reads the contents of the Graphics Controller Memory Data Latch for
|
||||
the plane selected by 3C0h index 4 bit 0-1 (Read Map Select).
|
||||
Note: This register is not documented by IBM and may not be available on all
|
||||
clones.
|
||||
|
||||
3d4h index 24h (R): Attribute Controller Toggle Register. (VGA - Undoc)
|
||||
bit 0-4 Attribute Controller Index.
|
||||
The current value of the Attribute Index Register.
|
||||
5 Palette Address Source. Same as 3C0h bit 5.
|
||||
7 If set next read or write to 3C0h will access the data register.
|
||||
Note: This register is not documented by IBM and may not be available on all
|
||||
clones.
|
||||
|
||||
3d4h index 30h-3Fh (W): Clear Vertical Display Enable. (VGA - Undoc)
|
||||
bit 0 Setting this bit will clear the Vertical Display Enable thus blanking
|
||||
the display for the rest of the frame and giving the CPU total access
|
||||
to display memory until the start of the next frame.
|
||||
Note: This register is not documented by IBM and may not be available on all
|
||||
clones.
|
||||
|
||||
3dAh (R): Input Status #1 Register
|
||||
bit 0 Either Vertical or Horizontal Retrace active if set
|
||||
1 (EGA Only) Light Pen has triggered if set
|
||||
2 (EGA Only) Light Pen switch is open if set
|
||||
3 Vertical Retrace in progress if set
|
||||
4-5 (EGA Only) Shows two of the 6 color outputs, depending on 3C0h index
|
||||
12h bit 4-5:
|
||||
Attr: Bit 4-5: Out bit 4 Out bit 5
|
||||
0 Blue Red
|
||||
1 I Blue Green
|
||||
2 I Red I Green
|
||||
|
||||
3dAh (W): Feature Control Register
|
||||
bit 0 (EGA Only) Output to pin 21 of the Feature Connector.
|
||||
1 (EGA Only) Output to pin 20 of the Feature Connector.
|
||||
3 (VGA Only) Vertical Sync Select. If set Vertical Sync to the monitor
|
||||
is the logical OR of the vertical sync and the vertical display
|
||||
enable.
|
||||
Note: On the VGA this register can be read from port 3CAh.
|
||||
|
|
@ -1,57 +1,56 @@
|
|||
The virtual terminal (vterm)
|
||||
----------------------------
|
||||
|
||||
FINAL CUT uses a virtual terminal to print character via an update method
|
||||
on the screen. It provides (as an overlying layer) virtual windows for
|
||||
the realization of window movements. The update methods only transfer
|
||||
differences to the virtual terminal or physical screen.
|
||||
|
||||
|
||||
|
||||
print(...)
|
||||
printf(...)
|
||||
│
|
||||
│ ╔═════════════════════════[ vterm ]═════════════════════════╗
|
||||
│ ║createVTerm() ║
|
||||
│ ║ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ║
|
||||
│ ║ ║
|
||||
│ ║ │ restoreVTerm(x,y,w,h) │ ║
|
||||
│ ║ ║
|
||||
│ ║ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘ ║
|
||||
│ ║ ║
|
||||
│ ┌───────╨─────[ vwin ]─────────────┐ ║
|
||||
│ │createArea(area) │ ║
|
||||
│ │ │ ║
|
||||
│ │ │ ║
|
||||
└───┼─────────────► ──────► updateVTerm(area) ────► ║
|
||||
│ │ ║
|
||||
│ putArea(x,y,area) ║
|
||||
│ ────────────────────► ║
|
||||
│ getArea(x,y,area) ║
|
||||
│ ◄──────────────────── ║
|
||||
│ │ ║
|
||||
│ │ ║
|
||||
│ resizeArea(area)│ ║
|
||||
└───────╥──────────────────────────┘ ║
|
||||
║ ║
|
||||
║ ║
|
||||
║ ║
|
||||
║ │ resizeVTerm()║
|
||||
╚═══▼═══════════════════════════════════════════════════════╝
|
||||
│
|
||||
│ putVTerm()
|
||||
└──────────────────► updateTerminalLine(y)
|
||||
updateTerminal() │
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ output_buffer │
|
||||
└───────────────┘
|
||||
│
|
||||
│ flush_out()
|
||||
│ +
|
||||
│ Fputchar(char)
|
||||
│
|
||||
▼
|
||||
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
||||
▌ ▐
|
||||
▌ screen ▐
|
||||
▌ ───────────── ▐
|
||||
▌ real terminal ▐
|
||||
▌ ▐
|
||||
▀▀▀▀▀▀▀███▀▀▀▀▀▀▀
|
||||
███
|
||||
▀▀▀▀▀▀▀▀▀
|
||||
|
||||
│ ╔════════════════════════[ vterm ]════════════════════════╗
|
||||
│ ║createVTerm() ║
|
||||
│ ║ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ║
|
||||
│ ║ ║
|
||||
│ ║ │ restoreVTerm(x,y,w,h) │ ║
|
||||
│ ┌───────╨────[ vwin ]────────────┐ ║
|
||||
│ │createArea(area) │ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘ ║
|
||||
│ │ │ ║
|
||||
│ │ │ ║
|
||||
└──┼────────► putArea(area) ────► ║
|
||||
│ │ ║
|
||||
│ putArea(x,y,area) ────► ║
|
||||
│ │ ║
|
||||
│ ◄──── getArea(x,y,area) ║
|
||||
│ │ ║
|
||||
│ │ ║
|
||||
│ │ ║
|
||||
│ resizeArea(area)│ ║
|
||||
└───────╥────────────────────────┘ ║
|
||||
║ ║
|
||||
║ │ resizeVTerm()║
|
||||
╚═══════▼═════════════════════════════════════════════════╝
|
||||
│
|
||||
│ putVTerm()
|
||||
└──────────────────► updateTerminalLine(y)
|
||||
updateTerminal() │
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ output_buffer │
|
||||
└───────────────┘
|
||||
│
|
||||
│ flushOutputBuffer()
|
||||
│ and putchar(char)
|
||||
▼
|
||||
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
||||
▌ ▐
|
||||
▌ screen ▐
|
||||
▌ ───────────── ▐
|
||||
▌ real terminal ▐
|
||||
▌ ▐
|
||||
▀▀▀▀▀▀▀███▀▀▀▀▀▀▀
|
||||
███
|
||||
▀▀▀▀▀▀▀▀▀
|
||||
|
|
|
@ -0,0 +1,432 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height="142.65057mm"
|
||||
viewBox="-3.4827666 -3.5036988 233.1604 142.65057"
|
||||
width="233.1604mm"
|
||||
version="1.1"
|
||||
id="svg165">
|
||||
<metadata
|
||||
id="metadata171">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs169">
|
||||
<marker
|
||||
id="a-3"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="scale(0.6)"
|
||||
id="path2-6"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round" />
|
||||
</marker>
|
||||
<marker
|
||||
id="s-7"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
d="M 0,5.65 V -5.65"
|
||||
transform="scale(0.8)"
|
||||
id="path56-5"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.00000003pt" />
|
||||
</marker>
|
||||
<marker
|
||||
id="r-9"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
d="M 0,5.65 V -5.65"
|
||||
transform="scale(0.8)"
|
||||
id="path53-1"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.00000003pt" />
|
||||
</marker>
|
||||
<marker
|
||||
id="c-2"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="scale(-0.6)"
|
||||
id="path8-7"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round" />
|
||||
</marker>
|
||||
<marker
|
||||
id="b-0"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="scale(0.6)"
|
||||
id="path5-6"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round" />
|
||||
</marker>
|
||||
</defs>
|
||||
<g
|
||||
id="Terminal"
|
||||
transform="translate(2.0027161e-8,-1.1799729e-6)">
|
||||
<rect
|
||||
y="-1.6996995"
|
||||
x="-1.6787703"
|
||||
height="139.04257"
|
||||
width="229.55241"
|
||||
id="background"
|
||||
style="opacity:1;fill:#98b5ef;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
|
||||
<path
|
||||
id="dialog-shadow"
|
||||
style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.40613544;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
d="m 73.582026,96.010501 h 84.672244 v 5.637389 H 73.582028 Z M 158.25427,33.999698 h 5.64481 V 101.6479 l -5.64481,-1e-5 z" />
|
||||
<rect
|
||||
style="opacity:1;fill:#4d4dc0;fill-opacity:1;stroke:none;stroke-width:0.26458329;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="titlebar"
|
||||
width="81.849838"
|
||||
height="5.637352"
|
||||
x="76.404434"
|
||||
y="28.362345"
|
||||
ry="0" />
|
||||
<g
|
||||
transform="translate(71.692613,37.697864)"
|
||||
aria-label="Dialog"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="title-bar-text">
|
||||
<path
|
||||
d="m 36.734547,-5.2188523 c 0.380342,0 0.645834,-0.099754 0.796479,-0.2992606 0.150644,-0.2011031 0.225967,-0.563408 0.225967,-1.0869146 0,-0.5282949 -0.07532,-0.8921958 -0.225967,-1.0917029 -0.149153,-0.2011032 -0.414646,-0.3016548 -0.796479,-0.3016548 h -0.214781 v 2.7795329 z m 0.0089,-3.176951 c 0.510105,0 0.959924,0.038483 1.201552,0.3289651 0.241628,0.2904823 0.28849,0.8489248 0.28849,1.4618107 0,0.6096937 -0.05097,1.1409181 -0.292598,1.4314005 -0.241629,0.2888862 -0.687339,0.3521929 -1.197444,0.3521929 h -0.677902 v -3.5743692 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4980" />
|
||||
<path
|
||||
d="m 39.416509,-7.374682 0.802684,4.768e-4 0.01072,2.1092046 0.323533,-0.00427 0.0043,0.4307556 -1.11338,0.00854 0.01281,-0.4392963 h 0.319263 l -0.0084,-1.6582097 -0.351555,6.36e-4 z m 0.372748,-1.0651357 h 0.427881 l -0.0044,0.78334 -0.425031,-4.739e-4 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4982" />
|
||||
<path
|
||||
d="m 43.125816,-6.0642176 h -0.27473 c -0.249596,0 -0.406952,-0.022255 -0.534076,0.066111 -0.125574,0.086816 -0.188361,0.217041 -0.188361,0.3906738 0,0.1565796 -0.0093,0.177762 0.09181,0.2675815 0.119043,0.1057463 0.200316,0.063855 0.367748,0.063855 0.235644,0 0.606933,-0.00609 0.84811,-0.022709 -0.0072,-0.223167 -0.0098,-0.3086156 -0.01715,-0.622359 v -0.1443988 z m 0.78146,-0.052714 -0.01329,1.2910685 -0.470069,0.00443 c -0.383705,0.023525 -0.613681,-0.015785 -0.877687,0.00543 -0.2651,0 -0.450139,-0.012404 -0.608269,-0.1612326 -0.15813,-0.1503784 -0.237195,-0.3511413 -0.237195,-0.6022888 0,-0.2899047 0.09689,-0.5100463 0.29068,-0.6604247 0.195337,-0.1503784 0.481366,-0.2255676 0.858087,-0.2255676 h 0.574384 v -0.067438 c -0.0015,-0.2077528 0.02628,-0.3111209 -0.0862,-0.3697529 -0.134874,-0.00598 -0.357472,-0.011877 -0.574003,-0.015059 -0.216531,-0.00318 -0.201855,-0.00432 -0.415259,-0.00808 -0.213404,-0.00376 -0.231246,-0.00347 -0.455954,-0.014158 l -0.001,-0.3673202 c 0.188279,-0.043006 0.323439,-0.05143 0.475607,-0.068437 0.152169,-0.017007 0.216267,-0.024363 0.392225,-0.024363 0.175959,0 0.545366,0.00521 0.697295,0.068767 0.153479,0.063562 0.09339,0.025958 0.258827,0.144224 0.06634,0.04776 0.147125,0.2290897 0.175883,0.3915519 0.0137,0.1385602 0.01156,0.2868772 0.01156,0.5147702 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4984" />
|
||||
<path
|
||||
d="m 45.900031,-5.6889027 c -1.56e-4,0.1884622 -0.0045,0.2960245 0.0014,0.4029534 0.128075,2.853e-4 0.38981,0.00676 0.325949,0.00344 l -1.39e-4,0.1054309 v 0.3556467 c 0,0 -0.204277,-1.388e-4 -0.306416,0 -0.276552,3.759e-4 -0.618616,0.00213 -0.829655,0.00226 -0.0042,-0.2397473 -0.0023,-0.4554667 4.08e-4,-0.4668341 0,0 0.0976,0.00163 0.189007,0.00197 0.183136,6.815e-4 0.166946,0.017973 0.166109,-0.027117 -0.0021,-0.1142859 0.002,-0.2795005 0.0012,-0.4269249 l -0.01118,-2.2559473 h -0.354419 l -0.0045,-0.3998272 h 0.824422 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4986" />
|
||||
<path
|
||||
d="m 48.501809,-7.0373667 q -0.331439,0 -0.501894,0.2391665 -0.170455,0.2391665 -0.170455,0.7087226 0,0.4673619 0.170455,0.7087226 0.170455,0.2391664 0.501894,0.2391664 0.333808,0 0.504263,-0.2391664 0.170454,-0.2413607 0.170454,-0.7087226 0,-0.4695561 -0.170454,-0.7087226 -0.170455,-0.2391665 -0.504263,-0.2391665 z m 0,-0.3422933 q 0.55161,0 0.842805,0.3313224 0.29356,0.3313223 0.29356,0.95886 0,0.6297319 -0.291193,0.9610541 -0.291194,0.3291282 -0.845172,0.3291282 -0.55161,0 -0.842803,-0.3291282 -0.291194,-0.3313222 -0.291194,-0.9610541 0,-0.6275377 0.291194,-0.95886 0.291193,-0.3313224 0.842803,-0.3313224 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458335px"
|
||||
id="path4988" />
|
||||
<path
|
||||
d="m 51.964761,-6.1043033 c 0,-0.3153981 -0.05478,-0.554613 -0.164328,-0.7176449 -0.107941,-0.1645555 -0.439029,-0.1268362 -0.646856,-0.1268362 -0.217493,0 -0.394754,0.042656 -0.497818,0.2468332 -0.0023,0.1743523 0.0016,0.2822498 0.0016,0.5976479 0,0.3153981 0.05719,0.5561367 0.171579,0.7222158 0.115996,0.1645555 0.262038,0.1347607 0.481143,0.1347607 0.204605,0 0.382387,0.029033 0.490328,-0.1370461 0.109552,-0.1660792 0.164328,-0.406056 0.164328,-0.7199304 z m 0.444654,1.1358901 c 0,0.3839629 -0.09586,0.6749823 -0.287575,0.8730584 -0.191717,0.1980761 -0.459268,0.2076824 -0.706567,0.2076824 -0.247298,0 -0.33316,0.00858 -0.480462,0.00196 -0.147303,-0.00662 -0.39649,-0.028793 -0.530208,-0.069932 l -0.0045,-0.4386006 c 0.175997,0.00217 0.296741,0.00642 0.436946,0.00372 0.140205,-0.0027 0.242375,-0.00179 0.41637,-0.00179 0.173995,0 0.335605,0.014139 0.574211,-0.044752 0.119552,-0.1030316 0.110826,-0.1010778 0.134895,-0.3592803 -0.223716,-0.00621 -0.02265,-0.00143 -0.203956,7.318e-4 -0.141072,0.00169 -0.355235,0.010041 -0.530841,0.010041 -0.315768,0 -0.607522,-0.059609 -0.796017,-0.298824 -0.188494,-0.2392149 -0.243119,-0.6191825 -0.243119,-1.0199056 0,-0.4022468 0.06708,-0.7229777 0.255572,-0.9621926 0.188495,-0.239215 0.396232,-0.2914175 0.774508,-0.2965599 0.378275,-0.00514 0.57781,-0.00176 0.781477,0.00434 l 0.407313,0.00318 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4990" />
|
||||
</g>
|
||||
<rect
|
||||
style="opacity:1;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="title-bar-button"
|
||||
width="8.4672203"
|
||||
height="5.6373534"
|
||||
x="67.93721"
|
||||
y="28.362345" />
|
||||
<path
|
||||
style="opacity:1;fill:none;stroke:#727272;stroke-width:0.40613541;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="title-bar-button-line"
|
||||
d="M 73.131727,31.089285 H 71.019288" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="dialog-client-area"
|
||||
width="90.317062"
|
||||
height="62.010803"
|
||||
x="67.93721"
|
||||
y="33.999699" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:0;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="dialog-border"
|
||||
width="87.551292"
|
||||
height="56.458969"
|
||||
x="69.366524"
|
||||
y="36.825737" />
|
||||
<path
|
||||
id="button-shadow"
|
||||
style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.40613541;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
d="m 124.38536,84.735805 h 25.40168 v 2.900645 h -25.40168 z m 25.3985,-2.767792 h 2.81775 v 5.668438 h -2.81775 z" />
|
||||
<rect
|
||||
style="opacity:1;fill:#727272;fill-opacity:1;stroke:none;stroke-width:0.40613541;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="button"
|
||||
width="28.224081"
|
||||
height="5.6373444"
|
||||
x="121.56296"
|
||||
y="79.098457" />
|
||||
<g
|
||||
transform="translate(71.692613,37.697864)"
|
||||
id="button-text">
|
||||
<path
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.2473854;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="Q-underline"
|
||||
d="M 61.074994,46.475002 H 58.683557" />
|
||||
<path
|
||||
d="m 61.556895,45.081249 v -1.673628 h 0.452124 v 1.673628 q 0,0.364146 0.130232,0.535368 0.132689,0.17122 0.407894,0.17122 0.319436,0 0.488983,-0.219452 0.169546,-0.221864 0.169546,-0.634242 v -1.526522 h 0.454582 v 2.696132 H 63.205674 V 45.69861 q -0.120402,0.233922 -0.329264,0.3545 -0.206404,0.120579 -0.484068,0.120579 -0.422638,0 -0.629042,-0.270097 -0.206405,-0.272507 -0.206405,-0.822343 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4661" />
|
||||
<path
|
||||
d="m 64.87924,43.518911 0.785453,4.86e-4 0.01049,2.155477 0.316588,-0.0044 0.0042,0.440206 -1.08948,0.0087 0.01253,-0.448935 h 0.31241 l -0.0082,-1.694587 -0.344008,6.5e-4 z m 0.364746,-1.088502 h 0.418696 l -0.0043,0.800525 -0.415908,-4.84e-4 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.76249981px;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4982-36" />
|
||||
<path
|
||||
d="m 68.340878,42.63592 -0.0082,0.870231 0.667564,-0.0041 0.0041,0.415134 -0.655161,-0.0041 -0.0082,1.300867 c -0.0013,0.199353 0.03618,0.338423 0.108529,0.417201 0.07235,0.07878 0.198587,0.118167 0.378699,0.118167 h 0.477992 v 0.354501 h -0.519556 c -0.318661,0 -0.543417,-0.06672 -0.674269,-0.200161 -0.130851,-0.133439 -0.196277,-0.363343 -0.196277,-0.689708 l -0.0041,-1.305001 c -0.332119,0 -0.359412,0.0041 -0.686298,0.01654 l -0.0041,-0.427537 h 0.686297 l 0.0082,-0.861963 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4665" />
|
||||
<path
|
||||
id="path4722"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-75.17538,-41.201563)"
|
||||
d="m 510.18359,316.11914 c -1.46621,0 -2.55977,0.58334 -3.28125,1.75 -0.71566,1.16667 -1.07226,2.93858 -1.07226,5.31445 0,2.36979 0.35661,4.13802 1.07226,5.30469 0.72148,1.16667 1.8091,1.75 3.26368,1.75 0.0465,0 0.10796,-0.004 0.18359,-0.01 -0.0488,0.12717 1.33074,-0.19815 1.57569,-0.41698 l 1.28368,0.84276 1.26563,-0.56055 -1.06836,-1.21875 c 0.32119,-0.33486 0.4522,-0.54975 0.64258,-0.95312 0.1363,-0.31537 0.5,-2.95183 0.5,-4.73829 0,-2.37587 -0.36056,-4.14778 -1.08203,-5.31445 -0.71565,-1.16666 -1.81117,-1.75 -3.28321,-1.75 z m 0,1.49414 c 0.89602,0 1.53987,0.42839 1.92969,1.28516 0.39565,0.85677 0.59375,2.28406 0.59375,4.2832 0,1.99913 -0.1981,3.42838 -0.59375,4.28516 -0.30165,-0.10534 -0.78096,-0.85138 -1.30469,-0.84571 l -1.45507,0.31641 1.03906,1.17969 0.4375,0.52539 c 0.0131,-7.4e-4 0.0224,-0.005 0.0351,-0.006 -0.20919,0.0651 -0.43368,0.10547 -0.68164,0.10547 -0.8902,0 -1.53209,-0.42839 -1.92773,-1.28516 -0.38983,-0.85677 -0.58398,-2.28233 -0.58398,-4.27539 -10e-6,-1.99914 0.19416,-3.42643 0.58398,-4.2832 0.39564,-0.85677 1.03753,-1.28516 1.92773,-1.28516 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<path
|
||||
id="grid"
|
||||
d="M 0.19939842,0.00358645 V 135.70594 M 3.0218084,0.00358645 V 135.70594 M 5.8442174,0.00358645 V 135.70594 M 8.6666254,0.00358645 V 135.70594 M 11.489038,0.00358645 V 135.70594 M 14.311447,0.00358645 V 135.70594 M 17.133854,0.00358645 V 135.70594 M 19.956264,0.00358645 V 135.70594 M 22.778672,0.00358645 V 135.70594 M 25.60108,0.00358645 V 135.70594 M 28.42349,0.00358645 V 135.70594 M 31.245898,0.00358645 V 135.70594 M 34.068306,0.00358645 V 135.70594 M 36.890714,0.00358645 V 135.70594 M 39.713123,0.00358645 V 135.70594 M 42.535532,0.00358645 V 135.70594 M 45.35794,0.00358645 V 135.70594 M 48.180349,0.00358645 V 135.70594 M 51.00276,0.00358645 V 135.70594 M 53.82517,0.00358645 V 135.70594 M 56.647575,0.00358645 V 135.70594 M 59.469985,0.00358645 V 135.70594 M 62.292391,0.00358645 V 135.70594 M 65.114806,0.00358645 V 135.70594 M 67.937211,0.00358645 V 135.70594 M 70.759622,0.00358645 V 135.70594 M 73.582026,0.00358645 V 135.70594 M 76.404432,0.00358645 V 135.70594 M 79.226847,0.00358645 V 135.70594 M 82.049252,0.00358645 V 135.70594 M 84.871663,0.00358645 V 135.70594 M 87.694067,0.00358645 V 135.70594 M 90.516478,0.00358645 V 135.70594 M 93.338889,0.00358645 V 135.70594 M 96.161298,0.00358645 V 135.70594 M 98.983704,0.00358645 V 135.70594 M 101.8061,0.00358645 V 135.70594 M 104.6285,0.00358645 V 135.70594 M 107.45091,0.00358645 V 135.70594 M 110.27332,0.00358645 V 135.70594 M 113.09573,0.00358645 V 135.70594 M 115.91813,0.00358645 V 135.70594 M 118.74054,0.00358645 V 135.70594 M 121.56296,0.00358645 V 135.70594 M 124.38536,0.00358645 V 135.70594 M 127.20777,0.00358645 V 135.70594 M 130.03017,0.00358645 V 135.70594 M 132.85259,0.00358645 V 135.70594 M 135.67499,0.00358645 V 135.70594 M 138.49741,0.00358645 V 135.70594 M 141.31982,0.00358645 V 135.70594 M 144.14222,0.00358645 V 135.70594 M 146.96463,0.00358645 V 135.70594 M 149.78704,0.00358645 V 135.70594 M 152.60945,0.00358645 V 135.70594 M 155.43186,0.00358645 V 135.70594 M 158.25427,0.00358645 V 135.70594 M 161.07667,0.00358645 V 135.70594 M 163.89908,0.00358645 V 135.70594 M 166.72149,0.00358645 V 135.70594 M 169.5439,0.00358645 V 135.70594 M 172.36631,0.00358645 V 135.70594 M 175.18871,0.00358645 V 135.70594 M 178.01112,0.00358645 V 135.70594 M 180.83353,0.00358645 V 135.70594 M 183.65594,0.00358645 V 135.70594 M 186.47835,0.00358645 V 135.70594 M 189.30076,0.00358645 V 135.70594 M 192.12317,0.00358645 V 135.70594 M 194.94557,0.00358645 V 135.70594 M 197.76799,0.00358645 V 135.70594 M 200.59039,0.00358645 V 135.70594 M 203.41281,0.00358645 V 135.70594 M 206.23521,0.00358645 V 135.70594 M 209.05761,0.00358645 V 135.70594 M 211.88003,0.00358645 V 135.70594 M 214.70243,0.00358645 V 135.70594 M 217.52485,0.00358645 V 135.70594 M 220.34725,0.00358645 V 135.70594 M 223.16966,0.00358645 V 135.70594 M 225.99207,0.00358645 V 135.70594 M 0.19939842,0.17562045 H 226.19405 M 0.19939842,5.8129634 H 226.19405 M 0.19939842,11.450306 H 226.19405 M 0.19939842,17.087659 H 226.19405 M 0.19939842,22.725002 H 226.19405 M 0.19939842,28.362345 H 226.19405 M 0.19939842,33.999698 H 226.19405 M 0.19939842,39.637041 H 226.19405 M 0.19939842,45.274384 H 226.19405 M 0.19939842,50.911727 H 226.19405 M 0.19939842,56.54908 H 226.19405 M 0.19939842,62.186423 H 226.19405 M 0.19939842,67.823776 H 226.19405 M 0.19939842,73.461119 H 226.19405 M 0.19939842,79.098462 H 226.19405 M 0.19939842,84.735805 H 226.19405 M 0.19939842,90.373158 H 226.19405 M 0.19939842,96.010501 H 226.19405 M 0.19939842,101.64789 H 226.19405 M 0.19939842,107.28523 H 226.19405 M 0.19939842,112.92258 H 226.19405 M 0.19939842,118.55993 H 226.19405 M 0.19939842,124.19727 H 226.19405 M 0.19939842,129.83461 H 226.19405 M 0.19939842,135.47196 H 226.19405"
|
||||
style="fill:none;stroke:#7c7c7c;stroke-width:0.106363;stroke-dasharray:0.212725, 0.106363, 0.053181, 0.106363;stroke-opacity:0.57478602" />
|
||||
</g>
|
||||
<text
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;stroke-width:0.26458299"
|
||||
font-size="3.880556"
|
||||
x="195.95805"
|
||||
y="120.19452"
|
||||
id="text79">getDesktopWidth() = 80</text>
|
||||
<text
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;stroke-width:0.26458299"
|
||||
font-size="3.880556"
|
||||
x="196.55679"
|
||||
y="125.13338"
|
||||
id="text81">getDesktopHeight() = 24</text>
|
||||
<path
|
||||
d="M 79.217364,0.22472627 V 30.998882"
|
||||
id="path83"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#r-9);marker-end:url(#c-2)" />
|
||||
<text
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="28.494898"
|
||||
y="9.6283751"
|
||||
id="text89">
|
||||
<tspan
|
||||
x="28.494898"
|
||||
y="9.6283751"
|
||||
id="tspan85">getPos() = (25,6)</tspan>
|
||||
<tspan
|
||||
x="28.494898"
|
||||
y="14.920043"
|
||||
id="tspan87">getTermPos() = (25,6)</tspan>
|
||||
</text>
|
||||
<text
|
||||
font-size="3.880556"
|
||||
x="80.911568"
|
||||
y="13.147828"
|
||||
id="text97"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">
|
||||
<tspan
|
||||
font-size="3.880556"
|
||||
x="80.911568"
|
||||
y="13.147828"
|
||||
id="tspan93"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">getY() = 6</tspan>
|
||||
<tspan
|
||||
font-size="3.880556"
|
||||
x="80.911568"
|
||||
y="17.998522"
|
||||
id="tspan95"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">getTermY() = 6</tspan>
|
||||
</text>
|
||||
<path
|
||||
d="M 68.681659,39.660894 H 0.24701944"
|
||||
id="path91"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#a-3);marker-end:url(#r-9)" />
|
||||
<path
|
||||
d="M 69.044694,30.9307 52.569957,16.081284"
|
||||
id="path99"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#a-3)" />
|
||||
<text
|
||||
font-size="3.880556"
|
||||
x="23.529711"
|
||||
y="38.200218"
|
||||
id="text105"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">
|
||||
<tspan
|
||||
font-size="3.880556"
|
||||
x="23.529711"
|
||||
y="38.200218"
|
||||
id="tspan101"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">getX() = 25</tspan>
|
||||
<tspan
|
||||
font-size="3.880556"
|
||||
x="23.529711"
|
||||
y="43.050911"
|
||||
id="tspan103"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">getTermX() = 25</tspan>
|
||||
</text>
|
||||
<path
|
||||
style="fill:none;stroke:#4f4f4f;stroke-width:3.60800004;stroke-linejoin:round"
|
||||
d="M -1.6787666,-1.6996988 H 227.87363 V 137.34287 H -1.6787666 Z"
|
||||
id="path163" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#aa4f5d;fill-opacity:1;stroke-width:0.26458299"
|
||||
font-size="3.880556"
|
||||
x="7.6337833"
|
||||
y="4.3176794"
|
||||
id="text81-3">
|
||||
<tspan
|
||||
y="4.3176794"
|
||||
x="7.6337833"
|
||||
id="tspan4561">(1,1)</tspan>
|
||||
</text>
|
||||
<rect
|
||||
y="0.17561977"
|
||||
x="0.19939597"
|
||||
height="5.6135254"
|
||||
width="2.8310132"
|
||||
id="rect4575"
|
||||
style="opacity:1;fill:#aa4f5d;fill-opacity:0.27777782;stroke:#aa4f5d;stroke-width:0.13229166;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#aa4f5d;fill-opacity:1;stroke-width:0.26458299"
|
||||
font-size="3.880556"
|
||||
x="217.05225"
|
||||
y="133.3719"
|
||||
id="text81-3-0">
|
||||
<tspan
|
||||
y="133.3719"
|
||||
x="217.05225"
|
||||
id="tspan4598">(80,24)</tspan>
|
||||
</text>
|
||||
<rect
|
||||
y="129.86887"
|
||||
x="223.19901"
|
||||
height="5.6135254"
|
||||
width="2.8310132"
|
||||
id="rect4575-1"
|
||||
style="opacity:1;fill:#aa4f5d;fill-opacity:0.27777782;stroke:#aa4f5d;stroke-width:0.13229166;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
d="M 122.40614,81.759513 H 70.75244"
|
||||
id="path91-3"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613502;marker-start:url(#a-3);marker-end:url(#s-7)" />
|
||||
<text
|
||||
font-size="3.880556"
|
||||
x="83.122948"
|
||||
y="80.298859"
|
||||
id="text105-5"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">
|
||||
<tspan
|
||||
font-size="3.880556"
|
||||
x="83.122948"
|
||||
y="80.298859"
|
||||
id="tspan101-6"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">getX() = 19</tspan>
|
||||
<tspan
|
||||
font-size="3.880556"
|
||||
x="83.122948"
|
||||
y="85.149551"
|
||||
id="tspan103-2"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">getTermX() = 44</tspan>
|
||||
</text>
|
||||
<path
|
||||
d="M 124.41247,39.600857 V 80.403768"
|
||||
id="path83-0"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613541;marker-start:url(#r-9);marker-end:url(#c-2);stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<text
|
||||
font-size="3.880556"
|
||||
x="126.10664"
|
||||
y="59.332214"
|
||||
id="text97-9"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">
|
||||
<tspan
|
||||
font-size="3.880556"
|
||||
x="126.10664"
|
||||
y="59.332214"
|
||||
id="tspan93-3"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">getY() = 8</tspan>
|
||||
<tspan
|
||||
font-size="3.880556"
|
||||
x="126.10664"
|
||||
y="64.182915"
|
||||
id="tspan95-6"
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299">getTermY() = 15</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="81.139328"
|
||||
y="58.211746"
|
||||
id="text89-2">
|
||||
<tspan
|
||||
x="81.139328"
|
||||
y="58.211746"
|
||||
id="tspan85-6"
|
||||
style="stroke-width:0.26458299">getPos() = (19,8)</tspan>
|
||||
<tspan
|
||||
x="81.139328"
|
||||
y="63.503418"
|
||||
id="tspan87-1"
|
||||
style="stroke-width:0.26458299">getTermPos() = (44,15)</tspan>
|
||||
</text>
|
||||
<path
|
||||
d="M 122.21838,79.514056 105.74357,64.664639"
|
||||
id="path99-8"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#b-0)" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#aa4f5d;fill-opacity:1;stroke-width:0.26458299"
|
||||
font-size="3.880556"
|
||||
x="216.86626"
|
||||
y="4.3176794"
|
||||
id="text81-3-0-7">
|
||||
<tspan
|
||||
y="4.3176794"
|
||||
x="216.86626"
|
||||
id="tspan5248">(80,1)</tspan>
|
||||
</text>
|
||||
<rect
|
||||
y="0.16718166"
|
||||
x="223.17175"
|
||||
height="5.6135254"
|
||||
width="2.8310132"
|
||||
id="rect4575-1-2"
|
||||
style="opacity:1;fill:#aa4f5d;fill-opacity:0.27777782;stroke:#aa4f5d;stroke-width:0.13229166;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#aa4f5d;fill-opacity:1;stroke-width:0.26458299"
|
||||
font-size="3.880556"
|
||||
x="8.6122913"
|
||||
y="133.3719"
|
||||
id="text81-3-9">
|
||||
<tspan
|
||||
y="133.3719"
|
||||
x="8.6122913"
|
||||
id="tspan4561-3"
|
||||
style="stroke-width:0.26458299">(1,24)</tspan>
|
||||
</text>
|
||||
<rect
|
||||
y="129.86887"
|
||||
x="0.19944175"
|
||||
height="5.6135254"
|
||||
width="2.8310132"
|
||||
id="rect4575-6"
|
||||
style="opacity:1;fill:#aa4f5d;fill-opacity:0.27777782;stroke:#aa4f5d;stroke-width:0.13229166;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</svg>
|
After Width: | Height: | Size: 31 KiB |
|
@ -0,0 +1,481 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height="142.65057mm"
|
||||
viewBox="-3.4827666 -3.5036988 233.1604 142.65057"
|
||||
width="233.1604mm"
|
||||
version="1.1"
|
||||
id="svg165">
|
||||
<metadata
|
||||
id="metadata171">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs169">
|
||||
<marker
|
||||
id="b-0-367"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="scale(0.6)"
|
||||
id="path5-6-5"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round" />
|
||||
</marker>
|
||||
<marker
|
||||
id="b-0-3"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="scale(0.6)"
|
||||
id="path5-6-6"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round" />
|
||||
</marker>
|
||||
<marker
|
||||
id="b-0-3-5"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="scale(0.6)"
|
||||
id="path5-6-6-3"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round" />
|
||||
</marker>
|
||||
<marker
|
||||
id="b-0-36"
|
||||
orient="auto"
|
||||
overflow="visible"
|
||||
refX="0"
|
||||
refY="0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="scale(0.6)"
|
||||
id="path5-6-7"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round" />
|
||||
</marker>
|
||||
</defs>
|
||||
<g
|
||||
id="Terminal">
|
||||
<rect
|
||||
y="-1.6996995"
|
||||
x="-1.6787703"
|
||||
height="139.04257"
|
||||
width="229.55241"
|
||||
id="background"
|
||||
style="opacity:1;fill:#98b5ef;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
|
||||
<path
|
||||
id="dialog-shadow"
|
||||
style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.40613544;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
d="m 73.582026,96.010501 h 84.672244 v 5.637389 H 73.582028 Z M 158.25427,33.999698 h 5.64481 V 101.6479 l -5.64481,-1e-5 z" />
|
||||
<rect
|
||||
style="opacity:1;fill:#4d4dc0;fill-opacity:1;stroke:none;stroke-width:0.26458329;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="titlebar"
|
||||
width="81.849838"
|
||||
height="5.637352"
|
||||
x="76.404434"
|
||||
y="28.362345"
|
||||
ry="0" />
|
||||
<g
|
||||
transform="translate(71.692613,37.697864)"
|
||||
aria-label="Dialog"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="title-bar-text">
|
||||
<path
|
||||
d="m 36.734547,-5.2188523 c 0.380342,0 0.645834,-0.099754 0.796479,-0.2992606 0.150644,-0.2011031 0.225967,-0.563408 0.225967,-1.0869146 0,-0.5282949 -0.07532,-0.8921958 -0.225967,-1.0917029 -0.149153,-0.2011032 -0.414646,-0.3016548 -0.796479,-0.3016548 h -0.214781 v 2.7795329 z m 0.0089,-3.176951 c 0.510105,0 0.959924,0.038483 1.201552,0.3289651 0.241628,0.2904823 0.28849,0.8489248 0.28849,1.4618107 0,0.6096937 -0.05097,1.1409181 -0.292598,1.4314005 -0.241629,0.2888862 -0.687339,0.3521929 -1.197444,0.3521929 h -0.677902 v -3.5743692 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4980" />
|
||||
<path
|
||||
d="m 39.416509,-7.374682 0.802684,4.768e-4 0.01072,2.1092046 0.323533,-0.00427 0.0043,0.4307556 -1.11338,0.00854 0.01281,-0.4392963 h 0.319263 l -0.0084,-1.6582097 -0.351555,6.36e-4 z m 0.372748,-1.0651357 h 0.427881 l -0.0044,0.78334 -0.425031,-4.739e-4 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4982" />
|
||||
<path
|
||||
d="m 43.125816,-6.0642176 h -0.27473 c -0.249596,0 -0.406952,-0.022255 -0.534076,0.066111 -0.125574,0.086816 -0.188361,0.217041 -0.188361,0.3906738 0,0.1565796 -0.0093,0.177762 0.09181,0.2675815 0.119043,0.1057463 0.200316,0.063855 0.367748,0.063855 0.235644,0 0.606933,-0.00609 0.84811,-0.022709 -0.0072,-0.223167 -0.0098,-0.3086156 -0.01715,-0.622359 v -0.1443988 z m 0.78146,-0.052714 -0.01329,1.2910685 -0.470069,0.00443 c -0.383705,0.023525 -0.613681,-0.015785 -0.877687,0.00543 -0.2651,0 -0.450139,-0.012404 -0.608269,-0.1612326 -0.15813,-0.1503784 -0.237195,-0.3511413 -0.237195,-0.6022888 0,-0.2899047 0.09689,-0.5100463 0.29068,-0.6604247 0.195337,-0.1503784 0.481366,-0.2255676 0.858087,-0.2255676 h 0.574384 v -0.067438 c -0.0015,-0.2077528 0.02628,-0.3111209 -0.0862,-0.3697529 -0.134874,-0.00598 -0.357472,-0.011877 -0.574003,-0.015059 -0.216531,-0.00318 -0.201855,-0.00432 -0.415259,-0.00808 -0.213404,-0.00376 -0.231246,-0.00347 -0.455954,-0.014158 l -0.001,-0.3673202 c 0.188279,-0.043006 0.323439,-0.05143 0.475607,-0.068437 0.152169,-0.017007 0.216267,-0.024363 0.392225,-0.024363 0.175959,0 0.545366,0.00521 0.697295,0.068767 0.153479,0.063562 0.09339,0.025958 0.258827,0.144224 0.06634,0.04776 0.147125,0.2290897 0.175883,0.3915519 0.0137,0.1385602 0.01156,0.2868772 0.01156,0.5147702 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4984" />
|
||||
<path
|
||||
d="m 45.900031,-5.6889027 c -1.56e-4,0.1884622 -0.0045,0.2960245 0.0014,0.4029534 0.128075,2.853e-4 0.38981,0.00676 0.325949,0.00344 l -1.39e-4,0.1054309 v 0.3556467 c 0,0 -0.204277,-1.388e-4 -0.306416,0 -0.276552,3.759e-4 -0.618616,0.00213 -0.829655,0.00226 -0.0042,-0.2397473 -0.0023,-0.4554667 4.08e-4,-0.4668341 0,0 0.0976,0.00163 0.189007,0.00197 0.183136,6.815e-4 0.166946,0.017973 0.166109,-0.027117 -0.0021,-0.1142859 0.002,-0.2795005 0.0012,-0.4269249 l -0.01118,-2.2559473 h -0.354419 l -0.0045,-0.3998272 h 0.824422 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4986" />
|
||||
<path
|
||||
d="m 48.501809,-7.0373667 q -0.331439,0 -0.501894,0.2391665 -0.170455,0.2391665 -0.170455,0.7087226 0,0.4673619 0.170455,0.7087226 0.170455,0.2391664 0.501894,0.2391664 0.333808,0 0.504263,-0.2391664 0.170454,-0.2413607 0.170454,-0.7087226 0,-0.4695561 -0.170454,-0.7087226 -0.170455,-0.2391665 -0.504263,-0.2391665 z m 0,-0.3422933 q 0.55161,0 0.842805,0.3313224 0.29356,0.3313223 0.29356,0.95886 0,0.6297319 -0.291193,0.9610541 -0.291194,0.3291282 -0.845172,0.3291282 -0.55161,0 -0.842803,-0.3291282 -0.291194,-0.3313222 -0.291194,-0.9610541 0,-0.6275377 0.291194,-0.95886 0.291193,-0.3313224 0.842803,-0.3313224 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458335px"
|
||||
id="path4988" />
|
||||
<path
|
||||
d="m 51.964761,-6.1043033 c 0,-0.3153981 -0.05478,-0.554613 -0.164328,-0.7176449 -0.107941,-0.1645555 -0.439029,-0.1268362 -0.646856,-0.1268362 -0.217493,0 -0.394754,0.042656 -0.497818,0.2468332 -0.0023,0.1743523 0.0016,0.2822498 0.0016,0.5976479 0,0.3153981 0.05719,0.5561367 0.171579,0.7222158 0.115996,0.1645555 0.262038,0.1347607 0.481143,0.1347607 0.204605,0 0.382387,0.029033 0.490328,-0.1370461 0.109552,-0.1660792 0.164328,-0.406056 0.164328,-0.7199304 z m 0.444654,1.1358901 c 0,0.3839629 -0.09586,0.6749823 -0.287575,0.8730584 -0.191717,0.1980761 -0.459268,0.2076824 -0.706567,0.2076824 -0.247298,0 -0.33316,0.00858 -0.480462,0.00196 -0.147303,-0.00662 -0.39649,-0.028793 -0.530208,-0.069932 l -0.0045,-0.4386006 c 0.175997,0.00217 0.296741,0.00642 0.436946,0.00372 0.140205,-0.0027 0.242375,-0.00179 0.41637,-0.00179 0.173995,0 0.335605,0.014139 0.574211,-0.044752 0.119552,-0.1030316 0.110826,-0.1010778 0.134895,-0.3592803 -0.223716,-0.00621 -0.02265,-0.00143 -0.203956,7.318e-4 -0.141072,0.00169 -0.355235,0.010041 -0.530841,0.010041 -0.315768,0 -0.607522,-0.059609 -0.796017,-0.298824 -0.188494,-0.2392149 -0.243119,-0.6191825 -0.243119,-1.0199056 0,-0.4022468 0.06708,-0.7229777 0.255572,-0.9621926 0.188495,-0.239215 0.396232,-0.2914175 0.774508,-0.2965599 0.378275,-0.00514 0.57781,-0.00176 0.781477,0.00434 l 0.407313,0.00318 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4990" />
|
||||
</g>
|
||||
<rect
|
||||
style="opacity:1;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="title-bar-button"
|
||||
width="8.4672203"
|
||||
height="5.6373534"
|
||||
x="67.93721"
|
||||
y="28.362345" />
|
||||
<path
|
||||
style="opacity:1;fill:none;stroke:#727272;stroke-width:0.40613541;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="title-bar-button-line"
|
||||
d="M 73.131727,31.089285 H 71.019288" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="dialog-client-area"
|
||||
width="90.317062"
|
||||
height="62.010803"
|
||||
x="67.93721"
|
||||
y="33.999699" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:0;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="dialog-border"
|
||||
width="87.551292"
|
||||
height="56.458969"
|
||||
x="69.366524"
|
||||
y="36.825737" />
|
||||
<path
|
||||
id="button-shadow"
|
||||
style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.40613541;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
d="m 124.38536,84.735805 h 25.40168 v 2.900645 h -25.40168 z m 25.3985,-2.767792 h 2.81775 v 5.668438 h -2.81775 z" />
|
||||
<rect
|
||||
style="opacity:1;fill:#727272;fill-opacity:1;stroke:none;stroke-width:0.40613541;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="button"
|
||||
width="28.224081"
|
||||
height="5.6373444"
|
||||
x="121.56296"
|
||||
y="79.098457" />
|
||||
<g
|
||||
transform="translate(71.692613,37.697864)"
|
||||
id="button-text">
|
||||
<path
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.2473854;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="Q-underline"
|
||||
d="M 61.074994,46.475002 H 58.683557" />
|
||||
<path
|
||||
d="m 61.556895,45.081249 v -1.673628 h 0.452124 v 1.673628 q 0,0.364146 0.130232,0.535368 0.132689,0.17122 0.407894,0.17122 0.319436,0 0.488983,-0.219452 0.169546,-0.221864 0.169546,-0.634242 v -1.526522 h 0.454582 v 2.696132 H 63.205674 V 45.69861 q -0.120402,0.233922 -0.329264,0.3545 -0.206404,0.120579 -0.484068,0.120579 -0.422638,0 -0.629042,-0.270097 -0.206405,-0.272507 -0.206405,-0.822343 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4661" />
|
||||
<path
|
||||
d="m 64.87924,43.518911 0.785453,4.86e-4 0.01049,2.155477 0.316588,-0.0044 0.0042,0.440206 -1.08948,0.0087 0.01253,-0.448935 h 0.31241 l -0.0082,-1.694587 -0.344008,6.5e-4 z m 0.364746,-1.088502 h 0.418696 l -0.0043,0.800525 -0.415908,-4.84e-4 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.76249981px;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4982-36" />
|
||||
<path
|
||||
d="m 68.340878,42.63592 -0.0082,0.870231 0.667564,-0.0041 0.0041,0.415134 -0.655161,-0.0041 -0.0082,1.300867 c -0.0013,0.199353 0.03618,0.338423 0.108529,0.417201 0.07235,0.07878 0.198587,0.118167 0.378699,0.118167 h 0.477992 v 0.354501 h -0.519556 c -0.318661,0 -0.543417,-0.06672 -0.674269,-0.200161 -0.130851,-0.133439 -0.196277,-0.363343 -0.196277,-0.689708 l -0.0041,-1.305001 c -0.332119,0 -0.359412,0.0041 -0.686298,0.01654 l -0.0041,-0.427537 h 0.686297 l 0.0082,-0.861963 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4665" />
|
||||
<path
|
||||
id="path4722"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-75.17538,-41.201563)"
|
||||
d="m 510.18359,316.11914 c -1.46621,0 -2.55977,0.58334 -3.28125,1.75 -0.71566,1.16667 -1.07226,2.93858 -1.07226,5.31445 0,2.36979 0.35661,4.13802 1.07226,5.30469 0.72148,1.16667 1.8091,1.75 3.26368,1.75 0.0465,0 0.10796,-0.004 0.18359,-0.01 -0.0488,0.12717 1.33074,-0.19815 1.57569,-0.41698 l 1.28368,0.84276 1.26563,-0.56055 -1.06836,-1.21875 c 0.32119,-0.33486 0.4522,-0.54975 0.64258,-0.95312 0.1363,-0.31537 0.5,-2.95183 0.5,-4.73829 0,-2.37587 -0.36056,-4.14778 -1.08203,-5.31445 -0.71565,-1.16666 -1.81117,-1.75 -3.28321,-1.75 z m 0,1.49414 c 0.89602,0 1.53987,0.42839 1.92969,1.28516 0.39565,0.85677 0.59375,2.28406 0.59375,4.2832 0,1.99913 -0.1981,3.42838 -0.59375,4.28516 -0.30165,-0.10534 -0.78096,-0.85138 -1.30469,-0.84571 l -1.45507,0.31641 1.03906,1.17969 0.4375,0.52539 c 0.0131,-7.4e-4 0.0224,-0.005 0.0351,-0.006 -0.20919,0.0651 -0.43368,0.10547 -0.68164,0.10547 -0.8902,0 -1.53209,-0.42839 -1.92773,-1.28516 -0.38983,-0.85677 -0.58398,-2.28233 -0.58398,-4.27539 -10e-6,-1.99914 0.19416,-3.42643 0.58398,-4.2832 0.39564,-0.85677 1.03753,-1.28516 1.92773,-1.28516 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<path
|
||||
id="grid"
|
||||
d="M 0.19939842,0.00358645 V 135.70594 M 3.0218084,0.00358645 V 135.70594 M 5.8442174,0.00358645 V 135.70594 M 8.6666254,0.00358645 V 135.70594 M 11.489038,0.00358645 V 135.70594 M 14.311447,0.00358645 V 135.70594 M 17.133854,0.00358645 V 135.70594 M 19.956264,0.00358645 V 135.70594 M 22.778672,0.00358645 V 135.70594 M 25.60108,0.00358645 V 135.70594 M 28.42349,0.00358645 V 135.70594 M 31.245898,0.00358645 V 135.70594 M 34.068306,0.00358645 V 135.70594 M 36.890714,0.00358645 V 135.70594 M 39.713123,0.00358645 V 135.70594 M 42.535532,0.00358645 V 135.70594 M 45.35794,0.00358645 V 135.70594 M 48.180349,0.00358645 V 135.70594 M 51.00276,0.00358645 V 135.70594 M 53.82517,0.00358645 V 135.70594 M 56.647575,0.00358645 V 135.70594 M 59.469985,0.00358645 V 135.70594 M 62.292391,0.00358645 V 135.70594 M 65.114806,0.00358645 V 135.70594 M 67.937211,0.00358645 V 135.70594 M 70.759622,0.00358645 V 135.70594 M 73.582026,0.00358645 V 135.70594 M 76.404432,0.00358645 V 135.70594 M 79.226847,0.00358645 V 135.70594 M 82.049252,0.00358645 V 135.70594 M 84.871663,0.00358645 V 135.70594 M 87.694067,0.00358645 V 135.70594 M 90.516478,0.00358645 V 135.70594 M 93.338889,0.00358645 V 135.70594 M 96.161298,0.00358645 V 135.70594 M 98.983704,0.00358645 V 135.70594 M 101.8061,0.00358645 V 135.70594 M 104.6285,0.00358645 V 135.70594 M 107.45091,0.00358645 V 135.70594 M 110.27332,0.00358645 V 135.70594 M 113.09573,0.00358645 V 135.70594 M 115.91813,0.00358645 V 135.70594 M 118.74054,0.00358645 V 135.70594 M 121.56296,0.00358645 V 135.70594 M 124.38536,0.00358645 V 135.70594 M 127.20777,0.00358645 V 135.70594 M 130.03017,0.00358645 V 135.70594 M 132.85259,0.00358645 V 135.70594 M 135.67499,0.00358645 V 135.70594 M 138.49741,0.00358645 V 135.70594 M 141.31982,0.00358645 V 135.70594 M 144.14222,0.00358645 V 135.70594 M 146.96463,0.00358645 V 135.70594 M 149.78704,0.00358645 V 135.70594 M 152.60945,0.00358645 V 135.70594 M 155.43186,0.00358645 V 135.70594 M 158.25427,0.00358645 V 135.70594 M 161.07667,0.00358645 V 135.70594 M 163.89908,0.00358645 V 135.70594 M 166.72149,0.00358645 V 135.70594 M 169.5439,0.00358645 V 135.70594 M 172.36631,0.00358645 V 135.70594 M 175.18871,0.00358645 V 135.70594 M 178.01112,0.00358645 V 135.70594 M 180.83353,0.00358645 V 135.70594 M 183.65594,0.00358645 V 135.70594 M 186.47835,0.00358645 V 135.70594 M 189.30076,0.00358645 V 135.70594 M 192.12317,0.00358645 V 135.70594 M 194.94557,0.00358645 V 135.70594 M 197.76799,0.00358645 V 135.70594 M 200.59039,0.00358645 V 135.70594 M 203.41281,0.00358645 V 135.70594 M 206.23521,0.00358645 V 135.70594 M 209.05761,0.00358645 V 135.70594 M 211.88003,0.00358645 V 135.70594 M 214.70243,0.00358645 V 135.70594 M 217.52485,0.00358645 V 135.70594 M 220.34725,0.00358645 V 135.70594 M 223.16966,0.00358645 V 135.70594 M 225.99207,0.00358645 V 135.70594 M 0.19939842,0.17562045 H 226.19405 M 0.19939842,5.8129634 H 226.19405 M 0.19939842,11.450306 H 226.19405 M 0.19939842,17.087659 H 226.19405 M 0.19939842,22.725002 H 226.19405 M 0.19939842,28.362345 H 226.19405 M 0.19939842,33.999698 H 226.19405 M 0.19939842,39.637041 H 226.19405 M 0.19939842,45.274384 H 226.19405 M 0.19939842,50.911727 H 226.19405 M 0.19939842,56.54908 H 226.19405 M 0.19939842,62.186423 H 226.19405 M 0.19939842,67.823776 H 226.19405 M 0.19939842,73.461119 H 226.19405 M 0.19939842,79.098462 H 226.19405 M 0.19939842,84.735805 H 226.19405 M 0.19939842,90.373158 H 226.19405 M 0.19939842,96.010501 H 226.19405 M 0.19939842,101.64789 H 226.19405 M 0.19939842,107.28523 H 226.19405 M 0.19939842,112.92258 H 226.19405 M 0.19939842,118.55993 H 226.19405 M 0.19939842,124.19727 H 226.19405 M 0.19939842,129.83461 H 226.19405 M 0.19939842,135.47196 H 226.19405"
|
||||
style="fill:none;stroke:#7c7c7c;stroke-width:0.106363;stroke-dasharray:0.212725, 0.106363, 0.053181, 0.106363;stroke-opacity:0.57478602" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#4f4f4f;stroke-width:3.60800004;stroke-linejoin:round"
|
||||
d="M -1.6787666,-1.6996976 H 227.87363 V 137.34287 H -1.6787666 Z"
|
||||
id="path163" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="41.527641"
|
||||
y="4.9554229"
|
||||
id="text89">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
id="tspan4726"
|
||||
x="41.527641"
|
||||
y="4.9554229">getSize() = FSize(32,12)</tspan>
|
||||
</text>
|
||||
<path
|
||||
d="m 141.17255,88.237306 23.08169,15.614314"
|
||||
id="path99-8"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#b-0-367)" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="57.409531"
|
||||
y="15.56948"
|
||||
id="text89-30">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="15.56948"
|
||||
x="57.409531"
|
||||
id="tspan4726-3">= FPoint(25,6), FPoint(56,17)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="32.320133"
|
||||
y="10.262449"
|
||||
id="text89-30-0">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="10.262449"
|
||||
x="32.320133"
|
||||
id="tspan4726-3-9">getGeometry() = FPoint(25,6), FSize(32,12)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="23.297857"
|
||||
y="20.876522"
|
||||
id="text89-30-2">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="20.876522"
|
||||
x="23.297857"
|
||||
id="tspan4726-3-5">getTermGeometry() = FPoint(25,6), FSize(32,12)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="57.409531"
|
||||
y="26.183567"
|
||||
id="text89-30-4">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="26.183567"
|
||||
x="57.409531"
|
||||
id="tspan4726-3-0">= FPoint(25,6), FPoint(56,17)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="35.089531"
|
||||
y="107.47711"
|
||||
id="text89-30-2-0">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="107.47711"
|
||||
x="35.089531"
|
||||
id="tspan4726-3-5-3">getShadow() = FSize(2,1)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="10.800667"
|
||||
y="112.85639"
|
||||
id="text89-30-4-0">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="112.85639"
|
||||
x="10.800667"
|
||||
id="tspan4726-3-0-9">getGeometryWithShadow() = FPoint(25,6), FSize(34,13)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="57.209534"
|
||||
y="118.22402"
|
||||
id="text89-30-4-0-2">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="118.22402"
|
||||
x="57.209534"
|
||||
id="tspan4726-3-0-9-5">= FPoint(25,6), FPoint(58,18)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="1.7888864"
|
||||
y="123.61495"
|
||||
id="text89-30-4-0-4">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="123.61495"
|
||||
x="1.7888864"
|
||||
id="tspan4726-3-0-9-0">getTermGeometryWithShadow() = FPoint(25,6), FSize(34,13)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="57.209534"
|
||||
y="128.98253"
|
||||
id="text89-30-4-0-2-5">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="128.98253"
|
||||
x="57.209534"
|
||||
id="tspan4726-3-0-9-5-9">= FPoint(25,6), FPoint(58,18)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="157.04732"
|
||||
y="4.9555144"
|
||||
id="text89-7">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
id="tspan4726-7"
|
||||
x="157.04732"
|
||||
y="4.9555144">getSize() = FSize(10,1)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="172.90981"
|
||||
y="15.569555"
|
||||
id="text89-30-5">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="15.569555"
|
||||
x="172.90981"
|
||||
id="tspan4726-3-4">= FPoint(19,8), FPoint(28,8)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="147.83995"
|
||||
y="10.262533"
|
||||
id="text89-30-0-8">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="10.262533"
|
||||
x="147.83995"
|
||||
id="tspan4726-3-9-1">getGeometry() = FPoint(19,8), FSize(10,1)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="138.81775"
|
||||
y="20.876591"
|
||||
id="text89-30-2-2">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="20.876591"
|
||||
x="138.81775"
|
||||
id="tspan4726-3-5-8">getTermGeometry() = FPoint(44,15), FSize(10,1)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="172.90981"
|
||||
y="26.183636"
|
||||
id="text89-30-4-9">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="26.183636"
|
||||
x="172.90981"
|
||||
id="tspan4726-3-0-3">= FPoint(44,15), FPoint(53,15)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="150.6093"
|
||||
y="107.47724"
|
||||
id="text89-30-2-0-6">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="107.47724"
|
||||
x="150.6093"
|
||||
id="tspan4726-3-5-3-8">getShadow() = FSize(1,1)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="126.32072"
|
||||
y="112.8565"
|
||||
id="text89-30-4-0-0">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="112.8565"
|
||||
x="126.32072"
|
||||
id="tspan4726-3-0-9-2">getGeometryWithShadow() = FPoint(19,8), FSize(11,2)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="172.90981"
|
||||
y="118.22413"
|
||||
id="text89-30-4-0-2-1">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="118.22413"
|
||||
x="172.90981"
|
||||
id="tspan4726-3-0-9-5-0">= FPoint(19,8), FPoint(29,9)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="117.30885"
|
||||
y="123.61508"
|
||||
id="text89-30-4-0-4-5">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="123.61508"
|
||||
x="117.30885"
|
||||
id="tspan4726-3-0-9-0-1">getTermGeometryWithShadow() = FPoint(44,15), FSize(11,2)</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055587px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="172.90981"
|
||||
y="128.98267"
|
||||
id="text89-30-4-0-2-5-1">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
y="128.98267"
|
||||
x="172.90981"
|
||||
id="tspan4726-3-0-9-5-9-0">= FPoint(44,15), FPoint(54,16)</tspan>
|
||||
</text>
|
||||
<path
|
||||
d="M 72.941072,98.826256 46.406441,104.33931"
|
||||
id="path99-8-7"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#b-0-3)" />
|
||||
<path
|
||||
d="M 67.351122,31.942493 40.816491,21.944363"
|
||||
id="path99-8-7-5"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613502;marker-start:url(#b-0-3-5)" />
|
||||
<path
|
||||
d="M 140.84178,77.363839 158.05881,22.058096"
|
||||
id="path99-8-5"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613505;marker-start:url(#b-0-36)" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.8777771px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="3.8918011"
|
||||
y="71.00386"
|
||||
id="text89-30-2-0-6-3">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
id="tspan4894"
|
||||
x="3.8918011"
|
||||
y="71.00386">FDialog()</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.8777771px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
font-size="3.88055611"
|
||||
x="182.95201"
|
||||
y="71.079964"
|
||||
id="text89-30-2-0-6-3-4">
|
||||
<tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.8777771px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
y="71.079964"
|
||||
x="182.95201"
|
||||
id="tspan4894-0">FButton()</tspan>
|
||||
</text>
|
||||
</svg>
|
After Width: | Height: | Size: 39 KiB |
|
@ -0,0 +1,702 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height="142.65057mm"
|
||||
viewBox="-3.4827666 -3.5036988 233.1604 142.65057"
|
||||
width="233.1604mm"
|
||||
version="1.1"
|
||||
id="svg165">
|
||||
<metadata
|
||||
id="metadata171">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs169">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="i-3">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path26-6"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="h-7">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path23-5"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="k-3">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path32-5"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="j-6">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path29-2"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="r-91">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.00000003pt"
|
||||
id="path53-2"
|
||||
transform="scale(0.8)"
|
||||
d="M 0,5.65 V -5.65" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="c-7">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path8-0"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="a-9">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path2-3"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="s-6">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.00000003pt"
|
||||
id="path56-0"
|
||||
transform="scale(0.8)"
|
||||
d="M 0,5.65 V -5.65" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="b-6">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path5-2"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="e-6">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path14-1"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="d-8">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path11-7"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="g-9">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path20-2"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="f-0">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path17-2"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="m-3">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path38-7"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="l-5">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path35-9"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="o-2">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path44-2"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="n-8">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path41-9"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="q-7">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path50-3"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="p-6">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path47-1"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="t-2">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path59-9"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="u-3">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path62-1"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="v-9">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path65-4"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="w-7">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path68-8"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="e-3-4">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path14-6-5"
|
||||
transform="scale(0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
overflow="visible"
|
||||
orient="auto"
|
||||
id="d-7-0">
|
||||
<path
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round"
|
||||
id="path11-5-3"
|
||||
transform="scale(-0.6)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" />
|
||||
</marker>
|
||||
</defs>
|
||||
<g
|
||||
id="Terminal">
|
||||
<rect
|
||||
y="-1.6996995"
|
||||
x="-1.6787703"
|
||||
height="139.04257"
|
||||
width="229.55241"
|
||||
id="background"
|
||||
style="opacity:1;fill:#98b5ef;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
|
||||
<path
|
||||
id="dialog-shadow"
|
||||
style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.40613544;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
d="m 73.582026,96.010501 h 84.672244 v 5.637389 H 73.582028 Z M 158.25427,33.999698 h 5.64481 V 101.6479 l -5.64481,-1e-5 z" />
|
||||
<rect
|
||||
style="opacity:1;fill:#4d4dc0;fill-opacity:1;stroke:none;stroke-width:0.26458329;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="titlebar"
|
||||
width="81.849838"
|
||||
height="5.637352"
|
||||
x="76.404434"
|
||||
y="28.362345"
|
||||
ry="0" />
|
||||
<g
|
||||
transform="translate(71.692613,37.697864)"
|
||||
aria-label="Dialog"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="title-bar-text">
|
||||
<path
|
||||
d="m 36.734547,-5.2188523 c 0.380342,0 0.645834,-0.099754 0.796479,-0.2992606 0.150644,-0.2011031 0.225967,-0.563408 0.225967,-1.0869146 0,-0.5282949 -0.07532,-0.8921958 -0.225967,-1.0917029 -0.149153,-0.2011032 -0.414646,-0.3016548 -0.796479,-0.3016548 h -0.214781 v 2.7795329 z m 0.0089,-3.176951 c 0.510105,0 0.959924,0.038483 1.201552,0.3289651 0.241628,0.2904823 0.28849,0.8489248 0.28849,1.4618107 0,0.6096937 -0.05097,1.1409181 -0.292598,1.4314005 -0.241629,0.2888862 -0.687339,0.3521929 -1.197444,0.3521929 h -0.677902 v -3.5743692 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4980" />
|
||||
<path
|
||||
d="m 39.416509,-7.374682 0.802684,4.768e-4 0.01072,2.1092046 0.323533,-0.00427 0.0043,0.4307556 -1.11338,0.00854 0.01281,-0.4392963 h 0.319263 l -0.0084,-1.6582097 -0.351555,6.36e-4 z m 0.372748,-1.0651357 h 0.427881 l -0.0044,0.78334 -0.425031,-4.739e-4 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4982" />
|
||||
<path
|
||||
d="m 43.125816,-6.0642176 h -0.27473 c -0.249596,0 -0.406952,-0.022255 -0.534076,0.066111 -0.125574,0.086816 -0.188361,0.217041 -0.188361,0.3906738 0,0.1565796 -0.0093,0.177762 0.09181,0.2675815 0.119043,0.1057463 0.200316,0.063855 0.367748,0.063855 0.235644,0 0.606933,-0.00609 0.84811,-0.022709 -0.0072,-0.223167 -0.0098,-0.3086156 -0.01715,-0.622359 v -0.1443988 z m 0.78146,-0.052714 -0.01329,1.2910685 -0.470069,0.00443 c -0.383705,0.023525 -0.613681,-0.015785 -0.877687,0.00543 -0.2651,0 -0.450139,-0.012404 -0.608269,-0.1612326 -0.15813,-0.1503784 -0.237195,-0.3511413 -0.237195,-0.6022888 0,-0.2899047 0.09689,-0.5100463 0.29068,-0.6604247 0.195337,-0.1503784 0.481366,-0.2255676 0.858087,-0.2255676 h 0.574384 v -0.067438 c -0.0015,-0.2077528 0.02628,-0.3111209 -0.0862,-0.3697529 -0.134874,-0.00598 -0.357472,-0.011877 -0.574003,-0.015059 -0.216531,-0.00318 -0.201855,-0.00432 -0.415259,-0.00808 -0.213404,-0.00376 -0.231246,-0.00347 -0.455954,-0.014158 l -0.001,-0.3673202 c 0.188279,-0.043006 0.323439,-0.05143 0.475607,-0.068437 0.152169,-0.017007 0.216267,-0.024363 0.392225,-0.024363 0.175959,0 0.545366,0.00521 0.697295,0.068767 0.153479,0.063562 0.09339,0.025958 0.258827,0.144224 0.06634,0.04776 0.147125,0.2290897 0.175883,0.3915519 0.0137,0.1385602 0.01156,0.2868772 0.01156,0.5147702 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4984" />
|
||||
<path
|
||||
d="m 45.900031,-5.6889027 c -1.56e-4,0.1884622 -0.0045,0.2960245 0.0014,0.4029534 0.128075,2.853e-4 0.38981,0.00676 0.325949,0.00344 l -1.39e-4,0.1054309 v 0.3556467 c 0,0 -0.204277,-1.388e-4 -0.306416,0 -0.276552,3.759e-4 -0.618616,0.00213 -0.829655,0.00226 -0.0042,-0.2397473 -0.0023,-0.4554667 4.08e-4,-0.4668341 0,0 0.0976,0.00163 0.189007,0.00197 0.183136,6.815e-4 0.166946,0.017973 0.166109,-0.027117 -0.0021,-0.1142859 0.002,-0.2795005 0.0012,-0.4269249 l -0.01118,-2.2559473 h -0.354419 l -0.0045,-0.3998272 h 0.824422 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4986" />
|
||||
<path
|
||||
d="m 48.501809,-7.0373667 q -0.331439,0 -0.501894,0.2391665 -0.170455,0.2391665 -0.170455,0.7087226 0,0.4673619 0.170455,0.7087226 0.170455,0.2391664 0.501894,0.2391664 0.333808,0 0.504263,-0.2391664 0.170454,-0.2413607 0.170454,-0.7087226 0,-0.4695561 -0.170454,-0.7087226 -0.170455,-0.2391665 -0.504263,-0.2391665 z m 0,-0.3422933 q 0.55161,0 0.842805,0.3313224 0.29356,0.3313223 0.29356,0.95886 0,0.6297319 -0.291193,0.9610541 -0.291194,0.3291282 -0.845172,0.3291282 -0.55161,0 -0.842803,-0.3291282 -0.291194,-0.3313222 -0.291194,-0.9610541 0,-0.6275377 0.291194,-0.95886 0.291193,-0.3313224 0.842803,-0.3313224 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458335px"
|
||||
id="path4988" />
|
||||
<path
|
||||
d="m 51.964761,-6.1043033 c 0,-0.3153981 -0.05478,-0.554613 -0.164328,-0.7176449 -0.107941,-0.1645555 -0.439029,-0.1268362 -0.646856,-0.1268362 -0.217493,0 -0.394754,0.042656 -0.497818,0.2468332 -0.0023,0.1743523 0.0016,0.2822498 0.0016,0.5976479 0,0.3153981 0.05719,0.5561367 0.171579,0.7222158 0.115996,0.1645555 0.262038,0.1347607 0.481143,0.1347607 0.204605,0 0.382387,0.029033 0.490328,-0.1370461 0.109552,-0.1660792 0.164328,-0.406056 0.164328,-0.7199304 z m 0.444654,1.1358901 c 0,0.3839629 -0.09586,0.6749823 -0.287575,0.8730584 -0.191717,0.1980761 -0.459268,0.2076824 -0.706567,0.2076824 -0.247298,0 -0.33316,0.00858 -0.480462,0.00196 -0.147303,-0.00662 -0.39649,-0.028793 -0.530208,-0.069932 l -0.0045,-0.4386006 c 0.175997,0.00217 0.296741,0.00642 0.436946,0.00372 0.140205,-0.0027 0.242375,-0.00179 0.41637,-0.00179 0.173995,0 0.335605,0.014139 0.574211,-0.044752 0.119552,-0.1030316 0.110826,-0.1010778 0.134895,-0.3592803 -0.223716,-0.00621 -0.02265,-0.00143 -0.203956,7.318e-4 -0.141072,0.00169 -0.355235,0.010041 -0.530841,0.010041 -0.315768,0 -0.607522,-0.059609 -0.796017,-0.298824 -0.188494,-0.2392149 -0.243119,-0.6191825 -0.243119,-1.0199056 0,-0.4022468 0.06708,-0.7229777 0.255572,-0.9621926 0.188495,-0.239215 0.396232,-0.2914175 0.774508,-0.2965599 0.378275,-0.00514 0.57781,-0.00176 0.781477,0.00434 l 0.407313,0.00318 z"
|
||||
style="font-size:4.76249981px;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332px"
|
||||
id="path4990" />
|
||||
</g>
|
||||
<rect
|
||||
style="opacity:1;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="title-bar-button"
|
||||
width="8.4672203"
|
||||
height="5.6373534"
|
||||
x="67.93721"
|
||||
y="28.362345" />
|
||||
<path
|
||||
style="opacity:1;fill:none;stroke:#727272;stroke-width:0.40613541;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="title-bar-button-line"
|
||||
d="M 73.131727,31.089285 H 71.019288" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="dialog-client-area"
|
||||
width="90.317062"
|
||||
height="62.010803"
|
||||
x="67.93721"
|
||||
y="33.999699" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:0;stroke:#000000;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="dialog-border"
|
||||
width="87.551292"
|
||||
height="56.458969"
|
||||
x="69.366524"
|
||||
y="36.825737" />
|
||||
<path
|
||||
id="button-shadow"
|
||||
style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.40613541;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
d="m 124.38536,84.735805 h 25.40168 v 2.900645 h -25.40168 z m 25.3985,-2.767792 h 2.81775 v 5.668438 h -2.81775 z" />
|
||||
<rect
|
||||
style="opacity:1;fill:#727272;fill-opacity:1;stroke:none;stroke-width:0.40613541;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="button"
|
||||
width="28.224081"
|
||||
height="5.6373444"
|
||||
x="121.56296"
|
||||
y="79.098457" />
|
||||
<g
|
||||
transform="translate(71.692613,37.697864)"
|
||||
id="button-text">
|
||||
<path
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.2473854;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="Q-underline"
|
||||
d="M 61.074994,46.475002 H 58.683557" />
|
||||
<path
|
||||
d="m 61.556895,45.081249 v -1.673628 h 0.452124 v 1.673628 q 0,0.364146 0.130232,0.535368 0.132689,0.17122 0.407894,0.17122 0.319436,0 0.488983,-0.219452 0.169546,-0.221864 0.169546,-0.634242 v -1.526522 h 0.454582 v 2.696132 H 63.205674 V 45.69861 q -0.120402,0.233922 -0.329264,0.3545 -0.206404,0.120579 -0.484068,0.120579 -0.422638,0 -0.629042,-0.270097 -0.206405,-0.272507 -0.206405,-0.822343 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4661" />
|
||||
<path
|
||||
d="m 64.87924,43.518911 0.785453,4.86e-4 0.01049,2.155477 0.316588,-0.0044 0.0042,0.440206 -1.08948,0.0087 0.01253,-0.448935 h 0.31241 l -0.0082,-1.694587 -0.344008,6.5e-4 z m 0.364746,-1.088502 h 0.418696 l -0.0043,0.800525 -0.415908,-4.84e-4 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.76249981px;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4982-36" />
|
||||
<path
|
||||
d="m 68.340878,42.63592 -0.0082,0.870231 0.667564,-0.0041 0.0041,0.415134 -0.655161,-0.0041 -0.0082,1.300867 c -0.0013,0.199353 0.03618,0.338423 0.108529,0.417201 0.07235,0.07878 0.198587,0.118167 0.378699,0.118167 h 0.477992 v 0.354501 h -0.519556 c -0.318661,0 -0.543417,-0.06672 -0.674269,-0.200161 -0.130851,-0.133439 -0.196277,-0.363343 -0.196277,-0.689708 l -0.0041,-1.305001 c -0.332119,0 -0.359412,0.0041 -0.686298,0.01654 l -0.0041,-0.427537 h 0.686297 l 0.0082,-0.861963 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:'Bitstream Vera Sans Mono';-inkscape-font-specification:'Bitstream Vera Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#c8c8c8;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path4665" />
|
||||
<path
|
||||
id="path4722"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-75.17538,-41.201563)"
|
||||
d="m 510.18359,316.11914 c -1.46621,0 -2.55977,0.58334 -3.28125,1.75 -0.71566,1.16667 -1.07226,2.93858 -1.07226,5.31445 0,2.36979 0.35661,4.13802 1.07226,5.30469 0.72148,1.16667 1.8091,1.75 3.26368,1.75 0.0465,0 0.10796,-0.004 0.18359,-0.01 -0.0488,0.12717 1.33074,-0.19815 1.57569,-0.41698 l 1.28368,0.84276 1.26563,-0.56055 -1.06836,-1.21875 c 0.32119,-0.33486 0.4522,-0.54975 0.64258,-0.95312 0.1363,-0.31537 0.5,-2.95183 0.5,-4.73829 0,-2.37587 -0.36056,-4.14778 -1.08203,-5.31445 -0.71565,-1.16666 -1.81117,-1.75 -3.28321,-1.75 z m 0,1.49414 c 0.89602,0 1.53987,0.42839 1.92969,1.28516 0.39565,0.85677 0.59375,2.28406 0.59375,4.2832 0,1.99913 -0.1981,3.42838 -0.59375,4.28516 -0.30165,-0.10534 -0.78096,-0.85138 -1.30469,-0.84571 l -1.45507,0.31641 1.03906,1.17969 0.4375,0.52539 c 0.0131,-7.4e-4 0.0224,-0.005 0.0351,-0.006 -0.20919,0.0651 -0.43368,0.10547 -0.68164,0.10547 -0.8902,0 -1.53209,-0.42839 -1.92773,-1.28516 -0.38983,-0.85677 -0.58398,-2.28233 -0.58398,-4.27539 -10e-6,-1.99914 0.19416,-3.42643 0.58398,-4.2832 0.39564,-0.85677 1.03753,-1.28516 1.92773,-1.28516 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<path
|
||||
id="grid"
|
||||
d="M 0.19939842,0.00358645 V 135.70594 M 3.0218084,0.00358645 V 135.70594 M 5.8442174,0.00358645 V 135.70594 M 8.6666254,0.00358645 V 135.70594 M 11.489038,0.00358645 V 135.70594 M 14.311447,0.00358645 V 135.70594 M 17.133854,0.00358645 V 135.70594 M 19.956264,0.00358645 V 135.70594 M 22.778672,0.00358645 V 135.70594 M 25.60108,0.00358645 V 135.70594 M 28.42349,0.00358645 V 135.70594 M 31.245898,0.00358645 V 135.70594 M 34.068306,0.00358645 V 135.70594 M 36.890714,0.00358645 V 135.70594 M 39.713123,0.00358645 V 135.70594 M 42.535532,0.00358645 V 135.70594 M 45.35794,0.00358645 V 135.70594 M 48.180349,0.00358645 V 135.70594 M 51.00276,0.00358645 V 135.70594 M 53.82517,0.00358645 V 135.70594 M 56.647575,0.00358645 V 135.70594 M 59.469985,0.00358645 V 135.70594 M 62.292391,0.00358645 V 135.70594 M 65.114806,0.00358645 V 135.70594 M 67.937211,0.00358645 V 135.70594 M 70.759622,0.00358645 V 135.70594 M 73.582026,0.00358645 V 135.70594 M 76.404432,0.00358645 V 135.70594 M 79.226847,0.00358645 V 135.70594 M 82.049252,0.00358645 V 135.70594 M 84.871663,0.00358645 V 135.70594 M 87.694067,0.00358645 V 135.70594 M 90.516478,0.00358645 V 135.70594 M 93.338889,0.00358645 V 135.70594 M 96.161298,0.00358645 V 135.70594 M 98.983704,0.00358645 V 135.70594 M 101.8061,0.00358645 V 135.70594 M 104.6285,0.00358645 V 135.70594 M 107.45091,0.00358645 V 135.70594 M 110.27332,0.00358645 V 135.70594 M 113.09573,0.00358645 V 135.70594 M 115.91813,0.00358645 V 135.70594 M 118.74054,0.00358645 V 135.70594 M 121.56296,0.00358645 V 135.70594 M 124.38536,0.00358645 V 135.70594 M 127.20777,0.00358645 V 135.70594 M 130.03017,0.00358645 V 135.70594 M 132.85259,0.00358645 V 135.70594 M 135.67499,0.00358645 V 135.70594 M 138.49741,0.00358645 V 135.70594 M 141.31982,0.00358645 V 135.70594 M 144.14222,0.00358645 V 135.70594 M 146.96463,0.00358645 V 135.70594 M 149.78704,0.00358645 V 135.70594 M 152.60945,0.00358645 V 135.70594 M 155.43186,0.00358645 V 135.70594 M 158.25427,0.00358645 V 135.70594 M 161.07667,0.00358645 V 135.70594 M 163.89908,0.00358645 V 135.70594 M 166.72149,0.00358645 V 135.70594 M 169.5439,0.00358645 V 135.70594 M 172.36631,0.00358645 V 135.70594 M 175.18871,0.00358645 V 135.70594 M 178.01112,0.00358645 V 135.70594 M 180.83353,0.00358645 V 135.70594 M 183.65594,0.00358645 V 135.70594 M 186.47835,0.00358645 V 135.70594 M 189.30076,0.00358645 V 135.70594 M 192.12317,0.00358645 V 135.70594 M 194.94557,0.00358645 V 135.70594 M 197.76799,0.00358645 V 135.70594 M 200.59039,0.00358645 V 135.70594 M 203.41281,0.00358645 V 135.70594 M 206.23521,0.00358645 V 135.70594 M 209.05761,0.00358645 V 135.70594 M 211.88003,0.00358645 V 135.70594 M 214.70243,0.00358645 V 135.70594 M 217.52485,0.00358645 V 135.70594 M 220.34725,0.00358645 V 135.70594 M 223.16966,0.00358645 V 135.70594 M 225.99207,0.00358645 V 135.70594 M 0.19939842,0.17562045 H 226.19405 M 0.19939842,5.8129634 H 226.19405 M 0.19939842,11.450306 H 226.19405 M 0.19939842,17.087659 H 226.19405 M 0.19939842,22.725002 H 226.19405 M 0.19939842,28.362345 H 226.19405 M 0.19939842,33.999698 H 226.19405 M 0.19939842,39.637041 H 226.19405 M 0.19939842,45.274384 H 226.19405 M 0.19939842,50.911727 H 226.19405 M 0.19939842,56.54908 H 226.19405 M 0.19939842,62.186423 H 226.19405 M 0.19939842,67.823776 H 226.19405 M 0.19939842,73.461119 H 226.19405 M 0.19939842,79.098462 H 226.19405 M 0.19939842,84.735805 H 226.19405 M 0.19939842,90.373158 H 226.19405 M 0.19939842,96.010501 H 226.19405 M 0.19939842,101.64789 H 226.19405 M 0.19939842,107.28523 H 226.19405 M 0.19939842,112.92258 H 226.19405 M 0.19939842,118.55993 H 226.19405 M 0.19939842,124.19727 H 226.19405 M 0.19939842,129.83461 H 226.19405 M 0.19939842,135.47196 H 226.19405"
|
||||
style="fill:none;stroke:#7c7c7c;stroke-width:0.106363;stroke-dasharray:0.212725, 0.106363, 0.053181, 0.106363;stroke-opacity:0.57478602" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#4f4f4f;stroke-width:3.60800004;stroke-linejoin:round"
|
||||
d="M -1.6787666,-1.6996976 H 227.87363 V 137.34287 H -1.6787666 Z"
|
||||
id="path163" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#i-3);marker-end:url(#h-7)"
|
||||
id="path75"
|
||||
d="M 0.71750465,127.07532 H 94.653983 m 36.300447,0 h 38.31176 56.1829" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#k-3);marker-end:url(#j-6)"
|
||||
id="path77"
|
||||
d="M 217.42769,0.67868155 V 50.334198 m 0,36.70988 0.10543,47.877372" />
|
||||
<text
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;stroke-width:0.26458299"
|
||||
id="text79"
|
||||
y="128.09375"
|
||||
x="112.81702"
|
||||
font-size="3.880556">getDesktopWidth()</text>
|
||||
<text
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;text-anchor:middle;stroke-width:0.26458299"
|
||||
id="text81"
|
||||
y="218.60313"
|
||||
x="-67.922623"
|
||||
transform="rotate(-90)"
|
||||
font-size="3.880556">getDesktopHeight()</text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#r-91);marker-end:url(#c-7)"
|
||||
id="path83"
|
||||
d="M 79.195185,0.1864336 V 30.96059" />
|
||||
<text
|
||||
style="font-size:4.23333406px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299"
|
||||
id="text89"
|
||||
y="8.0025988"
|
||||
x="38.52689"
|
||||
font-size="4.233334">
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
id="tspan85"
|
||||
y="8.0025988"
|
||||
x="38.52689">getPos()</tspan>
|
||||
<tspan
|
||||
style="stroke-width:0.26458299"
|
||||
id="tspan87"
|
||||
y="13.294264"
|
||||
x="38.52689">getTermPos()</tspan>
|
||||
</text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#a-9);marker-end:url(#s-6)"
|
||||
id="path91"
|
||||
d="M 68.659479,39.622603 H 0.22484765" />
|
||||
<text
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299"
|
||||
id="text97"
|
||||
y="13.109548"
|
||||
x="80.360222"
|
||||
font-size="3.880556">
|
||||
<tspan
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299"
|
||||
id="tspan93"
|
||||
y="13.109548"
|
||||
x="80.360222"
|
||||
font-size="3.880556">getY()</tspan>
|
||||
<tspan
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299"
|
||||
id="tspan95"
|
||||
y="17.960236"
|
||||
x="80.360222"
|
||||
font-size="3.880556">getTermY()</tspan>
|
||||
</text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#b-6)"
|
||||
id="path99"
|
||||
d="M 69.022514,30.892409 51.629013,15.07587" />
|
||||
<text
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299"
|
||||
id="text105"
|
||||
y="38.16193"
|
||||
x="23.507547"
|
||||
font-size="3.880556">
|
||||
<tspan
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299"
|
||||
id="tspan101"
|
||||
y="38.16193"
|
||||
x="23.507547"
|
||||
font-size="3.880556">getX()</tspan>
|
||||
<tspan
|
||||
style="font-size:3.88055611px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;stroke-width:0.26458299"
|
||||
id="tspan103"
|
||||
y="43.01263"
|
||||
x="23.507547"
|
||||
font-size="3.880556">getTermX()</tspan>
|
||||
</text>
|
||||
<path
|
||||
id="path107"
|
||||
d="m 68.517297,104.63844 c 9.778151,0 23.872888,0 33.651023,0 m 21.2908,0 h 34.11383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613502;marker-start:url(#e-6);marker-end:url(#d-8)" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458299"
|
||||
id="text109"
|
||||
y="105.70465"
|
||||
x="113.03175"
|
||||
font-size="3.880556">getWidth()</text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;marker-start:url(#g-9);marker-end:url(#f-0)"
|
||||
id="path111"
|
||||
d="m 168.43921,28.879659 v 24.612857 m 0.0915,23.177635 0.0139,18.749915" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458299"
|
||||
id="text115"
|
||||
y="169.59256"
|
||||
x="-64.999428"
|
||||
transform="rotate(-90)"
|
||||
font-size="3.880556">
|
||||
<tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458299"
|
||||
id="tspan113"
|
||||
y="169.59256"
|
||||
x="-64.999428">getHeight()</tspan>
|
||||
</text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;stroke-dasharray:0.98028101, 0.98028101"
|
||||
id="path117"
|
||||
d="m 158.34356,28.368476 h 22.9042" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;stroke-dasharray:0.98028101, 0.98028101"
|
||||
id="path119"
|
||||
d="m 158.2189,95.892736 h 23.00064" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;stroke-dasharray:0.98028101, 0.98028101"
|
||||
id="path121"
|
||||
d="M 158.41834,39.536952 H 181.2261" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;stroke-dasharray:0.98028101, 0.98028101"
|
||||
id="path123"
|
||||
d="M 158.26877,90.313866 H 181.2453" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#m-3);marker-end:url(#l-5)"
|
||||
id="path125"
|
||||
d="m 176.50913,40.100361 0.0586,8.690149 m 0.0134,32.440661 0.0334,8.550595" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458299"
|
||||
id="text127"
|
||||
y="177.81908"
|
||||
x="-64.977974"
|
||||
transform="rotate(-90)"
|
||||
font-size="3.880556">getClientHeight()</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458299"
|
||||
id="text131"
|
||||
y="34.690594"
|
||||
x="190.8372"
|
||||
font-size="4.233333">
|
||||
<tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458299"
|
||||
id="tspan129"
|
||||
font-size="3.527778">getTopPadding()</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
id="text135"
|
||||
y="93.831383"
|
||||
x="179.42957"
|
||||
font-size="4.233334">
|
||||
<tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
id="tspan133"
|
||||
font-size="3.527778">getBottomPadding()</tspan>
|
||||
</text>
|
||||
<path
|
||||
d="m 176.41928,28.968776 0.1054,10.028739 m -0.1054,-10.028739 0.1054,10.028739"
|
||||
id="path137"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;marker-start:url(#o-2);marker-end:url(#n-8)" />
|
||||
<path
|
||||
d="m 176.62275,91.092126 0.1054,4.33023 m -0.1054,-4.33023 0.1054,4.33023"
|
||||
id="path139"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;marker-start:url(#q-7);marker-end:url(#p-6)" />
|
||||
<path
|
||||
d="M 158.21888,95.892726 V 118.53038"
|
||||
id="path141"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;stroke-dasharray:0.98028101, 0.98028101" />
|
||||
<path
|
||||
d="M 70.730357,95.980486 V 118.54438"
|
||||
id="path143"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;stroke-dasharray:0.98028101, 0.98028101" />
|
||||
<path
|
||||
d="M 155.39817,95.960716 V 118.53576"
|
||||
id="path145"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;stroke-dasharray:0.98028101, 0.98028101" />
|
||||
<path
|
||||
d="M 67.900884,95.962716 V 118.5266"
|
||||
id="path147"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;stroke-dasharray:0.98028101, 0.98028101" />
|
||||
<path
|
||||
d="m 158.72867,115.55793 h 3.75652 m -3.75652,0.001 h -4.25436 m -3.8031,0 h 4.10756"
|
||||
id="path149"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;marker-start:url(#t-2);marker-end:url(#u-3)" />
|
||||
<path
|
||||
d="m 71.453846,115.55803 h 3.756526 m -3.756526,0.001 h -4.254372 m -3.803094,0 h 4.107552"
|
||||
id="path151"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.32675999;marker-start:url(#v-9);marker-end:url(#w-7)" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
id="text157"
|
||||
y="116.48471"
|
||||
x="163.30989"
|
||||
font-size="4.233334">
|
||||
<tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
id="tspan155"
|
||||
font-size="3.527778">getRightPadding()</tspan>
|
||||
</text>
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
id="text161"
|
||||
y="116.32534"
|
||||
x="76.057518"
|
||||
font-size="4.233334">
|
||||
<tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458299"
|
||||
id="tspan159"
|
||||
font-size="3.527778">getLeftPadding()</tspan>
|
||||
</text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.40613499;marker-start:url(#e-3-4);marker-end:url(#d-7-0)"
|
||||
id="path107-3"
|
||||
d="m 71.346359,110.06317 c 9.156515,0.0101 18.313083,-0.0139 27.469578,0.0102 m 30.441293,-0.026 25.48321,0.003" />
|
||||
<text
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;-inkscape-font-specification:'FreeSans, Arial, Bitstream Vera Sans, DejaVu Sans, Open Sans, sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458299"
|
||||
id="text109-5"
|
||||
y="111.1342"
|
||||
x="113.27158"
|
||||
font-size="3.880556">getClientWidth()</text>
|
||||
</svg>
|
After Width: | Height: | Size: 44 KiB |
|
@ -0,0 +1,240 @@
|
|||
/***********************************************************************
|
||||
* 7segment.cpp - Seven-segment display *
|
||||
* *
|
||||
* This file is part of the FINAL CUT widget toolkit *
|
||||
* *
|
||||
* Copyright 2012-2021 Markus Gans *
|
||||
* *
|
||||
* FINAL CUT 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 3 of *
|
||||
* the License, or (at your option) any later version. *
|
||||
* *
|
||||
* FINAL CUT 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 program. If not, see *
|
||||
* <http://www.gnu.org/licenses/>. *
|
||||
***********************************************************************/
|
||||
|
||||
#include <array>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include <final/final.h>
|
||||
|
||||
using finalcut::FColorPair;
|
||||
using finalcut::FColor;
|
||||
using finalcut::FRect;
|
||||
using finalcut::FPoint;
|
||||
using finalcut::FSize;
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// class SegmentView
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
class SegmentView final : public finalcut::FDialog
|
||||
{
|
||||
public:
|
||||
// Constructor
|
||||
explicit SegmentView (finalcut::FWidget* = nullptr);
|
||||
|
||||
private:
|
||||
struct sevenSegment
|
||||
{
|
||||
unsigned char a : 1;
|
||||
unsigned char b : 1;
|
||||
unsigned char c : 1;
|
||||
unsigned char d : 1;
|
||||
unsigned char e : 1;
|
||||
unsigned char f : 1;
|
||||
unsigned char g : 1;
|
||||
unsigned char : 1; // padding bit
|
||||
};
|
||||
|
||||
// Methods
|
||||
void hexEncoding();
|
||||
void get7Segment (const wchar_t);
|
||||
void draw() override;
|
||||
void initLayout() override;
|
||||
|
||||
// Data members
|
||||
std::map<wchar_t, sevenSegment> code{};
|
||||
std::array<finalcut::FString, 3> line{};
|
||||
finalcut::FLineEdit input{"0123", this};
|
||||
finalcut::FButton exit{"E&xit", this};
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
SegmentView::SegmentView (finalcut::FWidget* parent)
|
||||
: FDialog{parent}
|
||||
{
|
||||
// Set encoding
|
||||
hexEncoding();
|
||||
|
||||
// Input field
|
||||
input.setLabelText (L"&Hex value");
|
||||
input.setLabelText (L"&Hex-digits or (.) (:) (H) (L) (P) (U)");
|
||||
input.setLabelOrientation(finalcut::FLineEdit::LabelOrientation::Above);
|
||||
input.setMaxLength(9);
|
||||
input.setInputFilter("[:.hHlLpPuU[:xdigit:]]");
|
||||
|
||||
// Add some function callbacks
|
||||
input.addCallback
|
||||
(
|
||||
"changed",
|
||||
[] (SegmentView& dialog)
|
||||
{
|
||||
dialog.redraw();
|
||||
},
|
||||
std::ref(*this)
|
||||
);
|
||||
|
||||
exit.addCallback
|
||||
(
|
||||
"clicked",
|
||||
finalcut::getFApplication(),
|
||||
&finalcut::FApplication::cb_exitApp,
|
||||
this
|
||||
);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void SegmentView::hexEncoding()
|
||||
{
|
||||
code['0'] = sevenSegment{1, 1, 1, 1, 1, 1, 0};
|
||||
code['1'] = sevenSegment{0, 1, 1, 0, 0, 0, 0};
|
||||
code['2'] = sevenSegment{1, 1, 0, 1, 1, 0, 1};
|
||||
code['3'] = sevenSegment{1, 1, 1, 1, 0, 0, 1};
|
||||
code['4'] = sevenSegment{0, 1, 1, 0, 0, 1, 1};
|
||||
code['5'] = sevenSegment{1, 0, 1, 1, 0, 1, 1};
|
||||
code['6'] = sevenSegment{1, 0, 1, 1, 1, 1, 1};
|
||||
code['7'] = sevenSegment{1, 1, 1, 0, 0, 0, 0};
|
||||
code['8'] = sevenSegment{1, 1, 1, 1, 1, 1, 1};
|
||||
code['9'] = sevenSegment{1, 1, 1, 1, 0, 1, 1};
|
||||
code['A'] = sevenSegment{1, 1, 1, 0, 1, 1, 1};
|
||||
code['B'] = sevenSegment{0, 0, 1, 1, 1, 1, 1};
|
||||
code['C'] = sevenSegment{1, 0, 0, 1, 1, 1, 0};
|
||||
code['D'] = sevenSegment{0, 1, 1, 1, 1, 0, 1};
|
||||
code['E'] = sevenSegment{1, 0, 0, 1, 1, 1, 1};
|
||||
code['F'] = sevenSegment{1, 0, 0, 0, 1, 1, 1};
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void SegmentView::get7Segment (const wchar_t c)
|
||||
{
|
||||
for (std::size_t i{0}; i < 3; i++)
|
||||
line[i].clear();
|
||||
|
||||
switch ( c )
|
||||
{
|
||||
case ':':
|
||||
line[0] = ' ';
|
||||
line[1] = '.';
|
||||
line[2] = '.';
|
||||
break;
|
||||
|
||||
case '.':
|
||||
line[0] = ' ';
|
||||
line[1] = ' ';
|
||||
line[2] = '.';
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
line[0] = " ";
|
||||
line[1] = "|_|";
|
||||
line[2] = "| |";
|
||||
break;
|
||||
|
||||
case 'L':
|
||||
line[0] = " ";
|
||||
line[1] = "| ";
|
||||
line[2] = "|_ ";
|
||||
break;
|
||||
|
||||
case 'P':
|
||||
line[0] = " _ ";
|
||||
line[1] = "|_|";
|
||||
line[2] = "| ";
|
||||
break;
|
||||
|
||||
case 'U':
|
||||
line[0] = " ";
|
||||
line[1] = "| |";
|
||||
line[2] = "|_|";
|
||||
break;
|
||||
|
||||
default:
|
||||
// Hexadecimal digit from 0 up to f
|
||||
if ( code.find(c) != code.end() )
|
||||
{
|
||||
const sevenSegment& s = code[c];
|
||||
constexpr std::array<char, 2> h{{' ', '_'}};
|
||||
constexpr std::array<char, 2> v{{' ', '|'}};
|
||||
|
||||
line[0] << ' ' << h[s.a] << ' ';
|
||||
line[1] << v[s.f] << h[s.g] << v[s.b];
|
||||
line[2] << v[s.e] << h[s.d] << v[s.c];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void SegmentView::draw()
|
||||
{
|
||||
std::vector<finalcut::FTermBuffer> tbuffer(3);
|
||||
finalcut::FTermBuffer left_space{};
|
||||
|
||||
FDialog::draw();
|
||||
setColor(FColor::LightGray, FColor::Black);
|
||||
finalcut::drawBorder(this, FRect(FPoint{3, 6}, FPoint{40, 11}));
|
||||
|
||||
for (auto&& ch : input.getText().toUpper())
|
||||
{
|
||||
const FColorPair color{FColor::LightRed, FColor::Black};
|
||||
get7Segment(ch);
|
||||
|
||||
for (std::size_t i{0}; i < 3; i++)
|
||||
tbuffer[i] << color << line[i] << " ";
|
||||
}
|
||||
|
||||
const std::size_t length = tbuffer[0].getLength();
|
||||
|
||||
if ( length < 36 )
|
||||
left_space << finalcut::FString(36 - length, ' ');
|
||||
|
||||
print() << FPoint {4, 7} << left_space << tbuffer[0]
|
||||
<< FPoint {4, 8} << left_space << tbuffer[1]
|
||||
<< FPoint {4, 9} << left_space << tbuffer[2]
|
||||
<< FPoint {4, 10} << finalcut::FString{36, ' '};
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void SegmentView::initLayout()
|
||||
{
|
||||
// Dialog settings
|
||||
FDialog::setText ("Seven-segment display");
|
||||
FDialog::setGeometry (FPoint{25, 5}, FSize{42, 15});
|
||||
// Input field
|
||||
input.setGeometry (FPoint(2, 2), FSize{12, 1});
|
||||
// Exit button
|
||||
exit.setGeometry(FPoint{28, 11}, FSize{10, 1});
|
||||
FDialog::initLayout();
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// main part
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
finalcut::FApplication app(argc, argv);
|
||||
SegmentView dialog(&app);
|
||||
finalcut::FWidget::setMainWidget(&dialog);
|
||||
dialog.show();
|
||||
return app.exec();
|
||||
}
|
|
@ -1,17 +1,21 @@
|
|||
#----------------------------------------------------------------------
|
||||
# Makefile.am - The Final Cut example programs
|
||||
# Makefile.am - FINAL CUT example programs
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
if ! CPPUNIT_TEST
|
||||
|
||||
AM_LDFLAGS = -L$(top_builddir)/src/.libs -lfinal
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/src/include -Wall -Werror
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/src/include -Wall -Werror -std=c++11
|
||||
|
||||
noinst_PROGRAMS = \
|
||||
hello \
|
||||
dialog \
|
||||
input-dialog \
|
||||
event-log \
|
||||
fullwidth-character \
|
||||
7segment \
|
||||
choice \
|
||||
busy \
|
||||
listbox \
|
||||
listview \
|
||||
checklist \
|
||||
|
@ -20,9 +24,11 @@ noinst_PROGRAMS = \
|
|||
termcap \
|
||||
string-operations \
|
||||
mandelbrot \
|
||||
rotozoomer \
|
||||
calculator \
|
||||
watch \
|
||||
term-attributes \
|
||||
background-color \
|
||||
transparent \
|
||||
keyboard \
|
||||
mouse \
|
||||
|
@ -35,7 +41,11 @@ noinst_PROGRAMS = \
|
|||
hello_SOURCES = hello.cpp
|
||||
dialog_SOURCES = dialog.cpp
|
||||
input_dialog_SOURCES = input-dialog.cpp
|
||||
event_log_SOURCES = event-log.cpp
|
||||
fullwidth_character_SOURCES = fullwidth-character.cpp
|
||||
7segment_SOURCES = 7segment.cpp
|
||||
choice_SOURCES = choice.cpp
|
||||
busy_SOURCES = busy.cpp
|
||||
listbox_SOURCES = listbox.cpp
|
||||
listview_SOURCES = listview.cpp
|
||||
checklist_SOURCES = checklist.cpp
|
||||
|
@ -43,9 +53,11 @@ treeview_SOURCES = treeview.cpp
|
|||
opti_move_SOURCES = opti-move.cpp
|
||||
string_operations_SOURCES = string-operations.cpp
|
||||
mandelbrot_SOURCES = mandelbrot.cpp
|
||||
rotozoomer_SOURCES = rotozoomer.cpp
|
||||
calculator_SOURCES = calculator.cpp
|
||||
watch_SOURCES = watch.cpp
|
||||
term_attributes_SOURCES = term-attributes.cpp
|
||||
background_color_SOURCES = background-color.cpp
|
||||
termcap_SOURCES = termcap.cpp
|
||||
transparent_SOURCES = transparent.cpp
|
||||
keyboard_SOURCES = keyboard.cpp
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#-----------------------------------------------------------------------------
|
||||
# Makefile for Final Cut
|
||||
# Makefile for FINAL CUT
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
# This is where make install will install the executable
|
||||
|
@ -9,14 +9,14 @@ BINDIR = /usr/local/bin
|
|||
CXX = clang++
|
||||
SRCS = $(wildcard *.cpp)
|
||||
OBJS = $(SRCS:%.cpp=%)
|
||||
CCXFLAGS = $(OPTIMIZE) $(PROFILE) $(DEBUG)
|
||||
CCXFLAGS = $(OPTIMIZE) $(PROFILE) $(DEBUG) -std=c++11
|
||||
MAKEFILE = -f Makefile.clang
|
||||
LDFLAGS = -L../src -lfinal
|
||||
INCLUDES = -I../src/include -I/usr/include/final
|
||||
RM = rm -f
|
||||
|
||||
ifdef DEBUG
|
||||
OPTIMIZE = -O0 -fsanitize=bool,bounds,enum,float-cast-overflow,function,null
|
||||
OPTIMIZE = -O0 -fsanitize=undefined
|
||||
else
|
||||
OPTIMIZE = -O2
|
||||
endif
|
||||
|
@ -24,12 +24,12 @@ endif
|
|||
# $@ = name of the targets
|
||||
# $^ = all dependency (without double entries)
|
||||
.cpp:
|
||||
$(CXX) $(CCXFLAGS) $(INCLUDES) $(LDFLAGS) -o $@ $^
|
||||
$(CXX) $^ -o $@ $(CCXFLAGS) $(INCLUDES) $(LDFLAGS)
|
||||
|
||||
all: $(OBJS)
|
||||
|
||||
debug:
|
||||
$(MAKE) $(MAKEFILE) DEBUG="-g -D DEBUG -Wall -Wextra -Wpedantic -Weverything -Wpadded -Wno-reserved-id-macro"
|
||||
$(MAKE) $(MAKEFILE) DEBUG="-g -D DEBUG -Wall -Wextra -Wpedantic -Weverything -Wno-padded -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-implicit-fallthrough -Wno-reserved-id-macro"
|
||||
|
||||
profile:
|
||||
$(MAKE) $(MAKEFILE) PROFILE="-pg"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#-----------------------------------------------------------------------------
|
||||
# Makefile for Final Cut
|
||||
# Makefile for FINAL CUT
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
# This is where make install will install the executable
|
||||
|
@ -9,7 +9,7 @@ BINDIR = /usr/local/bin
|
|||
CXX = g++
|
||||
SRCS = $(wildcard *.cpp)
|
||||
OBJS = $(SRCS:%.cpp=%)
|
||||
CCXFLAGS = $(OPTIMIZE) $(PROFILE) $(DEBUG)
|
||||
CCXFLAGS = $(OPTIMIZE) $(PROFILE) $(DEBUG) -std=c++11
|
||||
MAKEFILE = -f Makefile.gcc
|
||||
LDFLAGS = -L../src -lfinal
|
||||
INCLUDES = -I../src/include -I/usr/include/final
|
||||
|
@ -24,7 +24,7 @@ endif
|
|||
# $@ = name of the targets
|
||||
# $^ = all dependency (without double entries)
|
||||
.cpp:
|
||||
$(CXX) $(CCXFLAGS) $(INCLUDES) $(LDFLAGS) -o $@ $^
|
||||
$(CXX) $^ -o $@ $(CCXFLAGS) $(INCLUDES) $(LDFLAGS)
|
||||
|
||||
all: $(OBJS)
|
||||
|
||||
|
|
|
@ -0,0 +1,233 @@
|
|||
/***********************************************************************
|
||||
* background-color.cpp - Sets the background color palette *
|
||||
* *
|
||||
* This file is part of the FINAL CUT widget toolkit *
|
||||
* *
|
||||
* Copyright 2019-2021 Markus Gans *
|
||||
* *
|
||||
* FINAL CUT 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 3 of *
|
||||
* the License, or (at your option) any later version. *
|
||||
* *
|
||||
* FINAL CUT 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 program. If not, see *
|
||||
* <http://www.gnu.org/licenses/>. *
|
||||
***********************************************************************/
|
||||
|
||||
#include <tuple>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <final/final.h>
|
||||
|
||||
using finalcut::FPoint;
|
||||
using finalcut::FRect;
|
||||
using finalcut::FSize;
|
||||
using finalcut::FColor;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// class Background
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
class Background final : public finalcut::FDialog
|
||||
{
|
||||
public:
|
||||
// Using-declaration
|
||||
using RGB = std::tuple<uChar, uChar, uChar>;
|
||||
|
||||
// Constructor
|
||||
explicit Background (finalcut::FWidget* = nullptr);
|
||||
|
||||
// Disable copy constructor
|
||||
Background (const Background&) = delete;
|
||||
|
||||
// Destructor
|
||||
~Background() noexcept override;
|
||||
|
||||
// Disable copy assignment operator (=)
|
||||
Background& operator = (const Background&) = delete;
|
||||
|
||||
private:
|
||||
// Methods
|
||||
void initLayout() override;
|
||||
|
||||
// Callback method
|
||||
void cb_changed();
|
||||
void cb_choice();
|
||||
|
||||
// Data members
|
||||
finalcut::FComboBox color_choice{this};
|
||||
finalcut::FSpinBox red{this};
|
||||
finalcut::FSpinBox green{this};
|
||||
finalcut::FSpinBox blue{this};
|
||||
finalcut::FButton quit{"&Quit", this};
|
||||
std::vector<std::pair<finalcut::FString, RGB>> color_list
|
||||
{
|
||||
{ "Light blue" , std::make_tuple(0x80, 0xa4, 0xec) },
|
||||
{ "Vivid blue" , std::make_tuple(0x37, 0x97, 0xfd) },
|
||||
{ "Bright blue" , std::make_tuple(0x3c, 0x85, 0xd2) },
|
||||
{ "Strong blue" , std::make_tuple(0x32, 0x64, 0x9f) },
|
||||
{ "Light cyan" , std::make_tuple(0x6c, 0xfe, 0xfe) },
|
||||
{ "Vivid cyan" , std::make_tuple(0x0b, 0xdd, 0xd4) },
|
||||
{ "Soft cyan" , std::make_tuple(0x49, 0xa8, 0xac) },
|
||||
{ "Light green" , std::make_tuple(0x81, 0xdf, 0xbb) },
|
||||
{ "Vivid green" , std::make_tuple(0x5c, 0x9e, 0x4a) },
|
||||
{ "Bright green" , std::make_tuple(0x0f, 0xba, 0x78) },
|
||||
{ "Strong green" , std::make_tuple(0x03, 0x8f, 0x68) },
|
||||
{ "Mint green" , std::make_tuple(0x4a, 0xfd, 0x91) },
|
||||
{ "Green" , std::make_tuple(0x6b, 0xe8, 0x1b) },
|
||||
{ "Dark green" , std::make_tuple(0x01, 0x65, 0x05) },
|
||||
{ "Dark sea green", std::make_tuple(0x7d, 0xb6, 0x96) },
|
||||
{ "Bright purple" , std::make_tuple(0x83, 0x76, 0xa2) },
|
||||
{ "Taupe" , std::make_tuple(0xa6, 0x8c, 0x99) },
|
||||
{ "Silver" , std::make_tuple(0xc1, 0xc1, 0xcb) }
|
||||
};
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
Background::Background (finalcut::FWidget* parent)
|
||||
: FDialog{parent}
|
||||
{
|
||||
// Combobox
|
||||
color_choice.setLabelOrientation (finalcut::FLineEdit::LabelOrientation::Above);
|
||||
color_choice.setLabelText ("Color choice");
|
||||
color_choice.unsetEditable();
|
||||
|
||||
for (auto& c : color_list)
|
||||
{
|
||||
finalcut::FListBoxItem item (c.first, c.second);
|
||||
color_choice.insert(item);
|
||||
}
|
||||
|
||||
// Spin boxes
|
||||
red.setLabelOrientation (finalcut::FLineEdit::LabelOrientation::Above);
|
||||
red.setLabelText ("Red");
|
||||
red.setRange (0, 255);
|
||||
red.setValue (0x80);
|
||||
|
||||
green.setLabelOrientation (finalcut::FLineEdit::LabelOrientation::Above);
|
||||
green.setLabelText ("Green");
|
||||
green.setRange (0, 255);
|
||||
green.setValue (0xa4);
|
||||
|
||||
blue.setLabelOrientation (finalcut::FLineEdit::LabelOrientation::Above);
|
||||
blue.setLabelText ("Blue");
|
||||
blue.setRange (0, 255);
|
||||
blue.setValue (0xec);
|
||||
|
||||
// Set the initial palette values
|
||||
if ( finalcut::FTerm::canChangeColorPalette() )
|
||||
{
|
||||
finalcut::FTerm::setPalette ( FColor::LightMagenta
|
||||
, int(red.getValue())
|
||||
, int(green.getValue())
|
||||
, int(blue.getValue()) );
|
||||
}
|
||||
|
||||
// Add some function callbacks
|
||||
quit.addCallback
|
||||
(
|
||||
"clicked",
|
||||
finalcut::getFApplication(),
|
||||
&finalcut::FApplication::cb_exitApp,
|
||||
this
|
||||
);
|
||||
|
||||
for (const auto spinbox : {&red, &green, &blue})
|
||||
{
|
||||
spinbox->addCallback
|
||||
(
|
||||
"changed",
|
||||
this, &Background::cb_changed
|
||||
);
|
||||
}
|
||||
|
||||
for (const auto& signal : {"row-changed", "clicked"})
|
||||
{
|
||||
color_choice.addCallback
|
||||
(
|
||||
signal,
|
||||
this, &Background::cb_choice
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
Background::~Background() noexcept = default; // destructor
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Background::initLayout()
|
||||
{
|
||||
FDialog::setText ("Background color palette");
|
||||
FDialog::setGeometry (FPoint{25, 5}, FSize{32, 12});
|
||||
color_choice.setGeometry (FPoint{2, 2}, FSize{18, 1});
|
||||
red.setGeometry (FPoint{2, 5}, FSize{7, 1});
|
||||
green.setGeometry (FPoint{12, 5}, FSize{7, 1});
|
||||
blue.setGeometry (FPoint{22, 5}, FSize{7, 1});
|
||||
quit.setGeometry(FPoint{19, 8}, FSize{10, 1}); // Quit button
|
||||
FDialog::initLayout();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Background::cb_changed()
|
||||
{
|
||||
if ( ! finalcut::FTerm::canChangeColorPalette() )
|
||||
return;
|
||||
|
||||
finalcut::FTerm::setPalette ( FColor::LightMagenta
|
||||
, int(red.getValue())
|
||||
, int(green.getValue())
|
||||
, int(blue.getValue()) );
|
||||
redraw();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Background::cb_choice()
|
||||
{
|
||||
if ( ! finalcut::FTerm::canChangeColorPalette() )
|
||||
return;
|
||||
|
||||
uChar r{};
|
||||
uChar g{};
|
||||
uChar b{};
|
||||
const RGB rgb = color_choice.getItemData<RGB>();
|
||||
std::tie(r, g, b) = rgb;
|
||||
red.setValue(r);
|
||||
green.setValue(g);
|
||||
blue.setValue(b);
|
||||
finalcut::FTerm::setPalette ( FColor::LightMagenta
|
||||
, int(red.getValue())
|
||||
, int(green.getValue())
|
||||
, int(blue.getValue()) );
|
||||
redraw();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// main part
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
// Create the application object
|
||||
finalcut::FApplication app(argc, argv);
|
||||
|
||||
// Force terminal initialization without calling show()
|
||||
app.initTerminal();
|
||||
|
||||
// The following lines require an initialized terminal
|
||||
if ( finalcut::FTerm::canChangeColorPalette() )
|
||||
app.setBackgroundColor(FColor::LightMagenta);
|
||||
|
||||
Background dialog(&app);
|
||||
finalcut::FWidget::setMainWidget(&dialog);
|
||||
dialog.show();
|
||||
return app.exec();
|
||||
}
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
/***********************************************************************
|
||||
* busy.cpp - Shows the use of the FBusyIndicator *
|
||||
* *
|
||||
* This file is part of the FINAL CUT widget toolkit *
|
||||
* *
|
||||
* Copyright 2020-2021 Markus Gans *
|
||||
* *
|
||||
* FINAL CUT 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 3 of *
|
||||
* the License, or (at your option) any later version. *
|
||||
* *
|
||||
* FINAL CUT 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 program. If not, see *
|
||||
* <http://www.gnu.org/licenses/>. *
|
||||
***********************************************************************/
|
||||
|
||||
#include <final/final.h>
|
||||
using finalcut::FPoint;
|
||||
using finalcut::FRect;
|
||||
using finalcut::FSize;
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// class Dialog
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
class Dialog final : public finalcut::FDialog
|
||||
{
|
||||
public:
|
||||
explicit Dialog (FWidget* parent = nullptr);
|
||||
|
||||
private:
|
||||
void initLayout() override;
|
||||
void adjustSize() override;
|
||||
|
||||
// Event handler
|
||||
void onTimer (finalcut::FTimerEvent*) override;
|
||||
|
||||
// Callback method
|
||||
void cb_start();
|
||||
|
||||
// Data members
|
||||
finalcut::FSpinBox seconds{this};
|
||||
finalcut::FButton start{"&Start", this};
|
||||
finalcut::FButton quit{"&Quit", this};
|
||||
finalcut::FBusyIndicator busy_indicator{this};
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
Dialog::Dialog (FWidget* parent)
|
||||
: finalcut::FDialog{parent}
|
||||
{
|
||||
seconds.setLabelText ("Seconds");
|
||||
seconds.setRange (0, 60);
|
||||
seconds.setValue (3);
|
||||
|
||||
// Add button callbacks
|
||||
seconds.addCallback
|
||||
(
|
||||
"activate",
|
||||
this, &Dialog::cb_start
|
||||
);
|
||||
|
||||
start.addCallback
|
||||
(
|
||||
"clicked",
|
||||
this, &Dialog::cb_start
|
||||
);
|
||||
|
||||
quit.addCallback
|
||||
(
|
||||
"clicked",
|
||||
finalcut::getFApplication(),
|
||||
&finalcut::FApplication::cb_exitApp,
|
||||
this
|
||||
);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Dialog::initLayout()
|
||||
{
|
||||
FDialog::setText ("Dialog");
|
||||
FDialog::setGeometry (FPoint{26, 5}, FSize{28, 10});
|
||||
seconds.setGeometry (FPoint{10, 2}, FSize{10, 1});
|
||||
start.setGeometry (FPoint{2, 6}, FSize{10, 1});
|
||||
quit.setGeometry (FPoint{15, 6}, FSize{10, 1});
|
||||
FDialog::initLayout();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Dialog::adjustSize()
|
||||
{
|
||||
finalcut::FDialog::adjustSize();
|
||||
auto x = int((getDesktopWidth() - getWidth()) / 2);
|
||||
const int y = 5;
|
||||
|
||||
if ( x < 1 )
|
||||
x = 1;
|
||||
|
||||
setPos (FPoint{x, y}, false);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Dialog::onTimer (finalcut::FTimerEvent*)
|
||||
{
|
||||
delOwnTimers();
|
||||
busy_indicator.stop();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void Dialog::cb_start()
|
||||
{
|
||||
if ( seconds.getValue() < 1 )
|
||||
return;
|
||||
|
||||
busy_indicator.start();
|
||||
addTimer(int(seconds.getValue() * 1000));
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// main part
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
finalcut::FApplication app(argc, argv);
|
||||
Dialog dialog(&app);
|
||||
finalcut::FWidget::setMainWidget(&dialog);
|
||||
dialog.show();
|
||||
return app.exec();
|
||||
}
|
|
@ -1,17 +1,17 @@
|
|||
/***********************************************************************
|
||||
* checklist.cpp - Example for FListView widget with checkboxes *
|
||||
* *
|
||||
* This file is part of the Final Cut widget toolkit *
|
||||
* This file is part of the FINAL CUT widget toolkit *
|
||||
* *
|
||||
* Copyright 2017-2018 Markus Gans *
|
||||
* Copyright 2017-2021 Markus Gans *
|
||||
* *
|
||||
* The Final Cut 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 3 of *
|
||||
* FINAL CUT 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 3 of *
|
||||
* the License, or (at your option) any later version. *
|
||||
* *
|
||||
* The Final Cut is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* FINAL CUT 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. *
|
||||
* *
|
||||
|
@ -20,75 +20,74 @@
|
|||
* <http://www.gnu.org/licenses/>. *
|
||||
***********************************************************************/
|
||||
|
||||
#include <array>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <final/final.h>
|
||||
|
||||
using finalcut::FPoint;
|
||||
using finalcut::FRect;
|
||||
using finalcut::FSize;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// class CheckList
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(1)
|
||||
|
||||
class CheckList : public finalcut::FDialog
|
||||
class CheckList final : public finalcut::FDialog
|
||||
{
|
||||
public:
|
||||
// Constructor
|
||||
explicit CheckList (finalcut::FWidget* = 0);
|
||||
explicit CheckList (finalcut::FWidget* = nullptr);
|
||||
|
||||
// Disable copy constructor
|
||||
CheckList (const CheckList&) = delete;
|
||||
|
||||
// Destructor
|
||||
~CheckList();
|
||||
~CheckList() override = default;
|
||||
|
||||
// Disable copy assignment operator (=)
|
||||
CheckList& operator = (const CheckList&) = delete;
|
||||
|
||||
private:
|
||||
// Disable copy constructor
|
||||
CheckList (const CheckList&);
|
||||
// Disable assignment operator (=)
|
||||
CheckList& operator = (const CheckList&);
|
||||
|
||||
// Method
|
||||
void populate();
|
||||
void initLayout() override;
|
||||
void adjustSize() override;
|
||||
|
||||
// Event handlers
|
||||
virtual void onKeyPress (finalcut::FKeyEvent*);
|
||||
virtual void onClose (finalcut::FCloseEvent*);
|
||||
void onKeyPress (finalcut::FKeyEvent*) override;
|
||||
void onClose (finalcut::FCloseEvent*) override;
|
||||
|
||||
// Callback method
|
||||
void cb_showList (finalcut::FWidget*, data_ptr);
|
||||
void cb_showList();
|
||||
|
||||
// Data Members
|
||||
finalcut::FListView listView;
|
||||
finalcut::FStatusBar status_bar;
|
||||
// Data members
|
||||
finalcut::FListView listview{this};
|
||||
finalcut::FStatusBar status_bar{this};
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
CheckList::CheckList (finalcut::FWidget* parent)
|
||||
: finalcut::FDialog(parent)
|
||||
, listView(this)
|
||||
, status_bar(this)
|
||||
: finalcut::FDialog{parent}
|
||||
{
|
||||
setText (L"Shopping list");
|
||||
setShadow();
|
||||
setGeometry (int(1 + (parent->getWidth() - 30) / 2), 5, 30, 13);
|
||||
listView.ignorePadding();
|
||||
listView.setGeometry (1, 2, getWidth(), getHeight() - 1);
|
||||
setShadow(); // Instead of the transparent window shadow
|
||||
listview.ignorePadding();
|
||||
|
||||
// Add columns to the view
|
||||
listView.addColumn ("Item");
|
||||
listView.addColumn ("Priority", 12);
|
||||
listview.addColumn ("Item");
|
||||
listview.addColumn ("Priority", 9);
|
||||
|
||||
// Set the type of sorting
|
||||
listView.setColumnSortType (1, finalcut::fc::by_name);
|
||||
listView.setColumnSortType (2, finalcut::fc::by_name);
|
||||
listview.setColumnSortType (1, finalcut::SortType::Name);
|
||||
listview.setColumnSortType (2, finalcut::SortType::Name);
|
||||
|
||||
// Statusbar at the bottom
|
||||
finalcut::FString separator;
|
||||
separator << ' ' << wchar_t(finalcut::fc::BoxDrawingsVertical) << ' ';
|
||||
listView.setStatusbarMessage ( finalcut::FString()
|
||||
finalcut::FString separator{};
|
||||
separator << ' ' << finalcut::UniChar::BoxDrawingsVertical << ' ';
|
||||
listview.setStatusbarMessage ( finalcut::FString{}
|
||||
<< "<Q> exit" << separator
|
||||
<< "<Space> select an item" << separator
|
||||
<< "<Enter> see your pick list");
|
||||
|
@ -97,55 +96,66 @@ CheckList::CheckList (finalcut::FWidget* parent)
|
|||
populate();
|
||||
|
||||
// Add callback method
|
||||
listView.addCallback
|
||||
listview.addCallback
|
||||
(
|
||||
"clicked",
|
||||
F_METHOD_CALLBACK (this, &CheckList::cb_showList)
|
||||
this, &CheckList::cb_showList
|
||||
);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
CheckList::~CheckList() // destructor
|
||||
{ }
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void CheckList::populate()
|
||||
{
|
||||
std::string list[][2] =
|
||||
{
|
||||
{ "Milk", "Highest" },
|
||||
{ "Cheese", "High" },
|
||||
{ "Yoghurt", "Medium" },
|
||||
{ "Bread", "Low" },
|
||||
{ "Eggs", "High" },
|
||||
{ "Toothpaste", "Medium" },
|
||||
{ "Apples", "Lowest" },
|
||||
{ "Bananas", "Medium" },
|
||||
{ "Fish", "Medium" },
|
||||
{ "Lemons", "Low" }
|
||||
};
|
||||
constexpr std::array<std::array<const char*, 2>, 10> list =
|
||||
{{
|
||||
{{ "Milk", "Highest" }},
|
||||
{{ "Cheese", "High" }},
|
||||
{{ "Yoghurt", "Medium" }},
|
||||
{{ "Bread", "Low" }},
|
||||
{{ "Eggs", "High" }},
|
||||
{{ "Toothpaste", "Medium" }},
|
||||
{{ "Apples", "Lowest" }},
|
||||
{{ "Bananas", "Medium" }},
|
||||
{{ "Fish", "Medium" }},
|
||||
{{ "Lemons", "Low" }}
|
||||
}};
|
||||
|
||||
const int lastItem = int(sizeof(list) / sizeof(list[0])) - 1;
|
||||
|
||||
for (int i = 0; i <= lastItem; i++)
|
||||
for (const auto& line : list)
|
||||
{
|
||||
const finalcut::FStringList line (&list[i][0], &list[i][0] + 2);
|
||||
finalcut::FObject::FObjectIterator iter = listView.insert (line);
|
||||
finalcut::FListViewItem* item = \
|
||||
static_cast<finalcut::FListViewItem*>(*iter);
|
||||
const finalcut::FStringList string_line (line.begin(), line.end());
|
||||
auto iter = listview.insert (string_line);
|
||||
auto item = static_cast<finalcut::FListViewItem*>(*iter);
|
||||
item->setCheckable(true);
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void CheckList::initLayout()
|
||||
{
|
||||
FDialog::setText (L"Shopping list");
|
||||
const std::size_t nf_offset = ( finalcut::FTerm::isNewFont() ) ? 1 : 0;
|
||||
FDialog::setSize (FSize{28 + nf_offset, 13} );
|
||||
listview.setGeometry ( FPoint{1 + int(nf_offset), 2}
|
||||
, FSize{getWidth() - nf_offset, getHeight() - 1} );
|
||||
FDialog::initLayout();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void CheckList::adjustSize()
|
||||
{
|
||||
finalcut::FDialog::adjustSize();
|
||||
setPos(FPoint{int(1 + (getDesktopWidth() - getWidth()) / 2), 5});
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void CheckList::onKeyPress (finalcut::FKeyEvent* ev)
|
||||
{
|
||||
if ( ! ev )
|
||||
return;
|
||||
|
||||
if ( ev->key() == 'q'
|
||||
|| ev->key() == finalcut::fc::Fkey_escape
|
||||
|| ev->key() == finalcut::fc::Fkey_escape_mintty )
|
||||
if ( ev->key() == finalcut::FKey('q')
|
||||
|| ev->key() == finalcut::FKey::Escape
|
||||
|| ev->key() == finalcut::FKey::Escape_mintty )
|
||||
{
|
||||
close();
|
||||
ev->accept();
|
||||
|
@ -161,21 +171,14 @@ void CheckList::onClose (finalcut::FCloseEvent* ev)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void CheckList::cb_showList (finalcut::FWidget*, data_ptr)
|
||||
void CheckList::cb_showList()
|
||||
{
|
||||
finalcut::FListViewIterator iter = listView.beginOfList();
|
||||
finalcut::FString shopping_list;
|
||||
finalcut::FString shopping_list{};
|
||||
|
||||
while ( iter != listView.endOfList() )
|
||||
for (auto item : listview.getData())
|
||||
{
|
||||
const finalcut::FListViewItem* item = \
|
||||
static_cast<finalcut::FListViewItem*>(*iter);
|
||||
|
||||
if ( item->isChecked() )
|
||||
shopping_list << wchar_t(finalcut::fc::Bullet) << ' '
|
||||
<< item->getText(1) << '\n';
|
||||
|
||||
++iter;
|
||||
shopping_list << finalcut::UniChar::Bullet << ' ' << item->getText(1) << '\n';
|
||||
}
|
||||
|
||||
if ( shopping_list.isEmpty() )
|
||||
|
@ -202,7 +205,7 @@ int main (int argc, char* argv[])
|
|||
CheckList d(&app);
|
||||
|
||||
// Set dialog d as main widget
|
||||
app.setMainWidget(&d);
|
||||
finalcut::FWidget::setMainWidget(&d);
|
||||
|
||||
// Show and start the application
|
||||
d.show();
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
/***********************************************************************
|
||||
* choice.cpp - FButtonGroup with scroll view *
|
||||
* *
|
||||
* This file is part of the Final Cut widget toolkit *
|
||||
* This file is part of the FINAL CUT widget toolkit *
|
||||
* *
|
||||
* Copyright 2017-2018 Markus Gans *
|
||||
* Copyright 2017-2020 Markus Gans *
|
||||
* *
|
||||
* The Final Cut 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 3 of *
|
||||
* FINAL CUT 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 3 of *
|
||||
* the License, or (at your option) any later version. *
|
||||
* *
|
||||
* The Final Cut is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* FINAL CUT 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. *
|
||||
* *
|
||||
|
@ -20,41 +20,46 @@
|
|||
* <http://www.gnu.org/licenses/>. *
|
||||
***********************************************************************/
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <final/final.h>
|
||||
|
||||
using finalcut::FPoint;
|
||||
using finalcut::FSize;
|
||||
|
||||
// function prototypes
|
||||
void cb_quit (finalcut::FWidget*, finalcut::FWidget::data_ptr);
|
||||
void populateChoice (std::vector<finalcut::FRadioButton*>&, finalcut::FButtonGroup*);
|
||||
void preset (std::vector<finalcut::FRadioButton*>&);
|
||||
// Using-declaration
|
||||
using FRadioButtonPtr = std::shared_ptr<finalcut::FRadioButton>;
|
||||
|
||||
// Function prototypes
|
||||
void cb_quit (finalcut::FDialog&);
|
||||
void populateChoice (std::vector<FRadioButtonPtr>&, finalcut::FButtonGroup&);
|
||||
void preset (std::vector<FRadioButtonPtr>&);
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// callback functions
|
||||
// Callback functions
|
||||
//----------------------------------------------------------------------
|
||||
void cb_quit (finalcut::FWidget*, finalcut::FWidget::data_ptr data)
|
||||
void cb_quit (finalcut::FDialog& dlg)
|
||||
{
|
||||
finalcut::FDialog* dlg = static_cast<finalcut::FDialog*>(data);
|
||||
dlg->close();
|
||||
dlg.close();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void populateChoice ( std::vector<finalcut::FRadioButton*>& os
|
||||
, finalcut::FButtonGroup* group )
|
||||
void populateChoice ( std::vector<FRadioButtonPtr>& os
|
||||
, finalcut::FButtonGroup& group )
|
||||
{
|
||||
os[0] = new finalcut::FRadioButton("AIX", group);
|
||||
os[1] = new finalcut::FRadioButton("Cygwin", group);
|
||||
os[2] = new finalcut::FRadioButton("FreeBSD", group);
|
||||
os[3] = new finalcut::FRadioButton("HP-UX", group);
|
||||
os[4] = new finalcut::FRadioButton("Linux", group);
|
||||
os[5] = new finalcut::FRadioButton("Mac OS X", group);
|
||||
os[6] = new finalcut::FRadioButton("NetBSD", group);
|
||||
os[7] = new finalcut::FRadioButton("OpenBSD", group);
|
||||
os[8] = new finalcut::FRadioButton("Solaris", group);
|
||||
os[0] = std::make_shared<finalcut::FRadioButton>("AIX", &group);
|
||||
os[1] = std::make_shared<finalcut::FRadioButton>("Cygwin", &group);
|
||||
os[2] = std::make_shared<finalcut::FRadioButton>("FreeBSD", &group);
|
||||
os[3] = std::make_shared<finalcut::FRadioButton>("HP-UX", &group);
|
||||
os[4] = std::make_shared<finalcut::FRadioButton>("Linux", &group);
|
||||
os[5] = std::make_shared<finalcut::FRadioButton>("Mac OS X", &group);
|
||||
os[6] = std::make_shared<finalcut::FRadioButton>("NetBSD", &group);
|
||||
os[7] = std::make_shared<finalcut::FRadioButton>("OpenBSD", &group);
|
||||
os[8] = std::make_shared<finalcut::FRadioButton>("Solaris", &group);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void preset (std::vector<finalcut::FRadioButton*>& os)
|
||||
void preset (std::vector<FRadioButtonPtr>& os)
|
||||
{
|
||||
#if defined(_AIX)
|
||||
os[0]->setChecked();
|
||||
|
@ -91,58 +96,58 @@ void preset (std::vector<finalcut::FRadioButton*>& os)
|
|||
//----------------------------------------------------------------------
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
finalcut::FString label_text = "no OS";
|
||||
finalcut::FString label_text{"no OS"};
|
||||
|
||||
// Create the application object
|
||||
finalcut::FApplication app(argc, argv);
|
||||
finalcut::FApplication app{argc, argv};
|
||||
|
||||
{ // Create a simple modal dialog box in this scope
|
||||
finalcut::FDialog dgl(&app);
|
||||
finalcut::FDialog dgl{&app};
|
||||
dgl.setModal();
|
||||
dgl.setText ("UNIX select");
|
||||
std::size_t w = 20;
|
||||
std::size_t h = 13;
|
||||
int x = int(app.getDesktopWidth() - w) / 2;
|
||||
int y = int(app.getDesktopHeight() - h) / 2;
|
||||
dgl.setGeometry (x, y, w, h);
|
||||
const std::size_t w{20};
|
||||
const std::size_t h{13};
|
||||
const int x = int(app.getDesktopWidth() - w) / 2;
|
||||
const int y = int(app.getDesktopHeight() - h) / 2;
|
||||
dgl.setGeometry (FPoint{x, y}, FSize{w, h});
|
||||
|
||||
// Create a button group
|
||||
finalcut::FButtonGroup checkButtonGroup("choice", &dgl);
|
||||
checkButtonGroup.setGeometry (2, 1, 16, 7);
|
||||
checkButtonGroup.setGeometry (FPoint{2, 1}, FSize{16, 7});
|
||||
|
||||
// Create radio buttons
|
||||
std::vector<finalcut::FRadioButton*> os (9);
|
||||
populateChoice (os, &checkButtonGroup);
|
||||
std::vector<FRadioButtonPtr> os(9);
|
||||
populateChoice (os, checkButtonGroup);
|
||||
|
||||
// Set the radio button geometry
|
||||
// => checkButtonGroup.setScrollSize(...) is not required
|
||||
// because a FButtonGroup is self-adjusting
|
||||
for (uInt i = 0; i < os.size(); i++)
|
||||
os[i]->setGeometry(1, int(1 + i), 12, 1);
|
||||
for (uInt i{0}; i < os.size(); i++)
|
||||
os[i]->setGeometry(FPoint{1, int(1 + i)}, FSize{12, 1});
|
||||
|
||||
preset(os);
|
||||
|
||||
// Scroll to the focused child element
|
||||
finalcut::FFocusEvent cfi (finalcut::fc::ChildFocusIn_Event);
|
||||
finalcut::FApplication::sendEvent(&checkButtonGroup, &cfi);
|
||||
finalcut::FFocusEvent cfi (finalcut::Event::ChildFocusIn);
|
||||
app.queueEvent(&checkButtonGroup, &cfi);
|
||||
|
||||
// Create a OK button
|
||||
finalcut::FButton ok("&OK", &dgl);
|
||||
ok.setGeometry (10, 9, 8, 1);
|
||||
ok.setGeometry (FPoint{10, 9}, FSize{8, 1});
|
||||
|
||||
// Connect the button signal "clicked" with the callback function
|
||||
ok.addCallback
|
||||
(
|
||||
"clicked",
|
||||
F_FUNCTION_CALLBACK (&cb_quit),
|
||||
&dgl
|
||||
&cb_quit,
|
||||
std::ref(dgl)
|
||||
);
|
||||
|
||||
// Show the dialog
|
||||
dgl.show();
|
||||
|
||||
// Get the checked radio button text
|
||||
for (int n = 1; n <= int(checkButtonGroup.getCount()); n++)
|
||||
for (auto n{1}; n <= int(checkButtonGroup.getCount()); n++)
|
||||
{
|
||||
if ( checkButtonGroup.isChecked(n) )
|
||||
{
|
||||
|
@ -152,9 +157,8 @@ int main (int argc, char* argv[])
|
|||
}
|
||||
} // Hide and destroy the dialog object
|
||||
|
||||
|
||||
// Create and show tooltip for two seconds
|
||||
finalcut::FToolTip tooltip(&app);
|
||||
finalcut::FToolTip tooltip{&app};
|
||||
tooltip.setText ("You have chosen " + label_text);
|
||||
tooltip.show();
|
||||
sleep(2);
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
/***********************************************************************
|
||||
* dialog.cpp - A FDialog example *
|
||||
* *
|
||||
* This file is part of the Final Cut widget toolkit *
|
||||
* This file is part of the FINAL CUT widget toolkit *
|
||||
* *
|
||||
* Copyright 2015-2018 Markus Gans *
|
||||
* Copyright 2015-2020 Markus Gans *
|
||||
* *
|
||||
* The Final Cut 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 3 of *
|
||||
* FINAL CUT 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 3 of *
|
||||
* the License, or (at your option) any later version. *
|
||||
* *
|
||||
* The Final Cut is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* FINAL CUT 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. *
|
||||
* *
|
||||
|
@ -22,17 +22,19 @@
|
|||
|
||||
#include <final/final.h>
|
||||
|
||||
using finalcut::FPoint;
|
||||
using finalcut::FSize;
|
||||
|
||||
// function prototype
|
||||
void cb_quit (finalcut::FWidget*, finalcut::FWidget::data_ptr);
|
||||
void cb_quit (const finalcut::FApplication&);
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// callback function
|
||||
//----------------------------------------------------------------------
|
||||
void cb_quit (finalcut::FWidget*, finalcut::FWidget::data_ptr data)
|
||||
void cb_quit (const finalcut::FApplication& app)
|
||||
{
|
||||
finalcut::FApplication* app = static_cast<finalcut::FApplication*>(data);
|
||||
app->quit();
|
||||
app.quit();
|
||||
}
|
||||
|
||||
|
||||
|
@ -42,43 +44,43 @@ void cb_quit (finalcut::FWidget*, finalcut::FWidget::data_ptr data)
|
|||
int main (int argc, char* argv[])
|
||||
{
|
||||
// Create the application object
|
||||
finalcut::FApplication app(argc, argv);
|
||||
finalcut::FApplication app{argc, argv};
|
||||
|
||||
// Create a simple dialog box
|
||||
finalcut::FDialog dgl(&app);
|
||||
finalcut::FDialog dgl{&app};
|
||||
dgl.setText ("FDialog");
|
||||
dgl.setGeometry (4, 3, 41, 11);
|
||||
dgl.setGeometry (FPoint{4, 3}, FSize{41, 11});
|
||||
|
||||
// Create text labels
|
||||
finalcut::FLabel label_1(&dgl);
|
||||
finalcut::FLabel label_2(&dgl);
|
||||
finalcut::FLabel label_1{&dgl};
|
||||
finalcut::FLabel label_2{&dgl};
|
||||
|
||||
label_1 << wchar_t(finalcut::fc::BlackUpPointingTriangle)
|
||||
<< std::wstring(L"\n")
|
||||
<< wchar_t(finalcut::fc::BoxDrawingsUpAndRight)
|
||||
<< finalcut::FString(2, wchar_t(finalcut::fc::BoxDrawingsHorizontal))
|
||||
label_1 << finalcut::UniChar::BlackUpPointingTriangle
|
||||
<< std::wstring{L"\n"}
|
||||
<< finalcut::UniChar::BoxDrawingsUpAndRight
|
||||
<< finalcut::FString{2, finalcut::UniChar::BoxDrawingsHorizontal}
|
||||
<< " Double click the title bar button,";
|
||||
label_2 << "press Q on the keyboard,\n"
|
||||
<< "or push the button below to exit\n"
|
||||
<< "the program.";
|
||||
|
||||
label_1.setGeometry (1, 1, 38, 2);
|
||||
label_2.setGeometry (5, 3, 34, 3);
|
||||
label_1.setGeometry (FPoint{1, 1}, FSize{38, 2});
|
||||
label_2.setGeometry (FPoint{5, 3}, FSize{34, 3});
|
||||
|
||||
// Create the quit button
|
||||
finalcut::FButton btn("&Quit", &dgl);
|
||||
btn.setGeometry (16, 7, 9, 1);
|
||||
finalcut::FButton btn{"&Quit", &dgl};
|
||||
btn.setGeometry (FPoint{16, 7}, FSize{9, 1});
|
||||
|
||||
// Connect the button signal "clicked" with the callback function
|
||||
btn.addCallback
|
||||
(
|
||||
"clicked",
|
||||
F_FUNCTION_CALLBACK (&cb_quit),
|
||||
&app
|
||||
&cb_quit,
|
||||
std::ref(app)
|
||||
);
|
||||
|
||||
// Set dialog object as main widget
|
||||
app.setMainWidget(&dgl);
|
||||
finalcut::FWidget::setMainWidget(&dgl);
|
||||
|
||||
// Show and start the application
|
||||
dgl.show();
|
||||
|
|
|
@ -0,0 +1,357 @@
|
|||
/***********************************************************************
|
||||
* event-log.cpp - Logs events in a dialog box *
|
||||
* *
|
||||
* This file is part of the FINAL CUT widget toolkit *
|
||||
* *
|
||||
* Copyright 2020-2021 Markus Gans *
|
||||
* *
|
||||
* FINAL CUT 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 3 of *
|
||||
* the License, or (at your option) any later version. *
|
||||
* *
|
||||
* FINAL CUT 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 program. If not, see *
|
||||
* <http://www.gnu.org/licenses/>. *
|
||||
***********************************************************************/
|
||||
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <tuple>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <final/final.h>
|
||||
|
||||
using finalcut::FPoint;
|
||||
using finalcut::FRect;
|
||||
using finalcut::FSize;
|
||||
|
||||
class EventLog; // class forward declaration
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// class EventLog::EventLog
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
class EventDialog final : public finalcut::FDialog
|
||||
{
|
||||
public:
|
||||
// Constructor
|
||||
explicit EventDialog (finalcut::FWidget* = nullptr);
|
||||
|
||||
// Disable copy constructor
|
||||
EventDialog (const EventDialog&) = delete;
|
||||
|
||||
// Destructor
|
||||
~EventDialog() noexcept override;
|
||||
|
||||
// Disable copy assignment operator (=)
|
||||
EventDialog& operator = (const EventDialog&) = delete;
|
||||
|
||||
private:
|
||||
// Methods
|
||||
void initLayout() override;
|
||||
finalcut::FString getMouseButtonName (const finalcut::MouseButton&) const;
|
||||
void logMouseEvent ( const finalcut::FString&
|
||||
, const finalcut::FMouseEvent& );
|
||||
|
||||
// Event handlers
|
||||
void onClose (finalcut::FCloseEvent*) override;
|
||||
void onShow (finalcut::FShowEvent*) override;
|
||||
void onTimer (finalcut::FTimerEvent*) override;
|
||||
void onKeyPress (finalcut::FKeyEvent*) override;
|
||||
void onMouseDown (finalcut::FMouseEvent*) override;
|
||||
void onMouseMove (finalcut::FMouseEvent*) override;
|
||||
void onMouseUp (finalcut::FMouseEvent*) override;
|
||||
void onMouseDoubleClick (finalcut::FMouseEvent* ev) override;
|
||||
void onWindowActive (finalcut::FEvent*) override;
|
||||
void onWindowInactive (finalcut::FEvent*) override;
|
||||
void onWindowRaised (finalcut::FEvent*) override;
|
||||
void onWindowLowered (finalcut::FEvent*) override;
|
||||
|
||||
// Data members
|
||||
finalcut::FLog& log{*finalcut::FApplication::getLog()};
|
||||
finalcut::FLabel label{this};
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
EventDialog::EventDialog (finalcut::FWidget* parent)
|
||||
: FDialog{parent}
|
||||
{
|
||||
setShadow();
|
||||
label.setText("\n\nUse the keyboard or mouse\n"
|
||||
"in this dialog to create events");
|
||||
label.setAlignment(finalcut::Align::Center);
|
||||
addTimer(60000); // Starts the timer every minute
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
EventDialog::~EventDialog() noexcept = default; // destructor
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::initLayout()
|
||||
{
|
||||
FDialog::setText ("Event dialog");
|
||||
FDialog::setGeometry (FPoint{15, 2}, FSize{53, 12});
|
||||
label.setGeometry (FPoint(1, 1), getClientSize(), false);
|
||||
FDialog::initLayout();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
finalcut::FString EventDialog::getMouseButtonName (const finalcut::MouseButton& btn_state) const
|
||||
{
|
||||
const auto& empty = finalcut::fc::emptyFString::get();
|
||||
auto S = bool(btn_state & finalcut::MouseButton::Shift);
|
||||
auto C = bool(btn_state & finalcut::MouseButton::Control);
|
||||
auto M = bool(btn_state & finalcut::MouseButton::Meta);
|
||||
auto l = bool(btn_state & finalcut::MouseButton::Left);
|
||||
auto r = bool(btn_state & finalcut::MouseButton::Right);
|
||||
auto m = bool(btn_state & finalcut::MouseButton::Middle);
|
||||
auto prefix = (S ? finalcut::FString("Shift+") : empty)
|
||||
+ (C ? finalcut::FString("Control+") : empty)
|
||||
+ (M ? finalcut::FString("Meta+") : empty);
|
||||
|
||||
if ( l )
|
||||
return prefix + "left";
|
||||
else if ( r )
|
||||
return prefix + "right";
|
||||
else if ( m )
|
||||
return prefix + "middle";
|
||||
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::logMouseEvent ( const finalcut::FString& state
|
||||
, const finalcut::FMouseEvent& ev )
|
||||
{
|
||||
const int mouse_x = ev.getX();
|
||||
const int mouse_y = ev.getY();
|
||||
|
||||
log << finalcut::FLog::LogLevel::Info
|
||||
<< getMouseButtonName(ev.getButton())
|
||||
<< " mouse button " << state << " at ("
|
||||
<< mouse_x << ", " << mouse_y << ")" << std::flush;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onClose (finalcut::FCloseEvent* ev)
|
||||
{
|
||||
log.info("The event dialog was closed");
|
||||
ev->accept();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onShow (finalcut::FShowEvent*)
|
||||
{
|
||||
log.info("The event dialog is now displayed");
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onTimer (finalcut::FTimerEvent*)
|
||||
{
|
||||
log.info("-- minute marker --");
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onKeyPress (finalcut::FKeyEvent* ev)
|
||||
{
|
||||
const finalcut::FKey key_id = ev->key();
|
||||
finalcut::FString key_name = finalcut::FTerm::getKeyName(key_id);
|
||||
|
||||
if ( key_name.isEmpty() )
|
||||
key_name = wchar_t(key_id);
|
||||
|
||||
// std::clog redirects all stream data to FLogger
|
||||
std::clog << finalcut::FLog::LogLevel::Info
|
||||
<< "Key " << key_name
|
||||
<< " (id " << uInt32(key_id) << ")" << std::flush;
|
||||
|
||||
finalcut::FDialog::onKeyPress(ev);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onMouseDown (finalcut::FMouseEvent* ev)
|
||||
{
|
||||
logMouseEvent("down", *ev);
|
||||
finalcut::FDialog::onMouseDown(ev);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onMouseMove (finalcut::FMouseEvent* ev)
|
||||
{
|
||||
logMouseEvent("move", *ev);
|
||||
finalcut::FDialog::onMouseMove(ev);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onMouseUp (finalcut::FMouseEvent* ev)
|
||||
{
|
||||
logMouseEvent("up", *ev);
|
||||
finalcut::FDialog::onMouseUp(ev);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onMouseDoubleClick (finalcut::FMouseEvent* ev)
|
||||
{
|
||||
logMouseEvent("double click", *ev);
|
||||
finalcut::FDialog::onMouseDoubleClick(ev);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onWindowActive (finalcut::FEvent* ev)
|
||||
{
|
||||
log.info("The Event dialog is now active");
|
||||
finalcut::FDialog::onWindowActive(ev);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onWindowInactive (finalcut::FEvent* ev)
|
||||
{
|
||||
log.info("The Event dialog is now inactive");
|
||||
finalcut::FDialog::onWindowInactive(ev);
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onWindowRaised (finalcut::FEvent* ev)
|
||||
{
|
||||
log.info("The dialog was raised");
|
||||
finalcut::FDialog::onWindowRaised(ev);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventDialog::onWindowLowered (finalcut::FEvent* ev)
|
||||
{
|
||||
log.info("The dialog was lowered");
|
||||
finalcut::FDialog::onWindowLowered(ev);
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// class EventLog
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
class EventLog final : public finalcut::FDialog, public std::ostringstream
|
||||
{
|
||||
public:
|
||||
// Constructor
|
||||
explicit EventLog (finalcut::FWidget* = nullptr);
|
||||
|
||||
// Disable copy constructor
|
||||
EventLog (const EventLog&) = delete;
|
||||
|
||||
// Destructor
|
||||
~EventLog() noexcept override;
|
||||
|
||||
// Disable copy assignment operator (=)
|
||||
EventLog& operator = (const EventLog&) = delete;
|
||||
|
||||
// Event handlers
|
||||
void onTimer (finalcut::FTimerEvent*) override;
|
||||
void onClose (finalcut::FCloseEvent*) override;
|
||||
|
||||
private:
|
||||
// Method
|
||||
void initLayout() override;
|
||||
void adjustSize() override;
|
||||
|
||||
// Data members
|
||||
finalcut::FTextView scrolltext{this};
|
||||
EventDialog* event_dialog{new EventDialog(this)};
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
EventLog::EventLog (finalcut::FWidget* parent)
|
||||
: FDialog{parent}
|
||||
{
|
||||
setMinimumSize (FSize{75, 5});
|
||||
setShadow();
|
||||
scrolltext.ignorePadding();
|
||||
event_dialog->setFocus();
|
||||
addTimer(250); // Starts the timer every 250 milliseconds
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
EventLog::~EventLog() noexcept = default; // destructor
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventLog::onTimer (finalcut::FTimerEvent*)
|
||||
{
|
||||
if ( str().empty() )
|
||||
return;
|
||||
|
||||
scrolltext.append(str());
|
||||
str("");
|
||||
scrolltext.scrollToEnd();
|
||||
redraw();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventLog::onClose (finalcut::FCloseEvent* ev)
|
||||
{
|
||||
finalcut::FApplication::closeConfirmationDialog (this, ev);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventLog::initLayout()
|
||||
{
|
||||
FDialog::setText ("Event log");
|
||||
FDialog::setGeometry (FPoint{4, 16}, FSize{75, 8});
|
||||
FDialog::setResizeable();
|
||||
scrolltext.setGeometry (FPoint{1, 2}, FSize{getWidth(), getHeight() - 1});
|
||||
FDialog::initLayout();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
void EventLog::adjustSize()
|
||||
{
|
||||
finalcut::FDialog::adjustSize();
|
||||
scrolltext.setGeometry (FPoint{1, 2}, FSize(getWidth(), getHeight() - 1));
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// main part
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
finalcut::FApplication app(argc, argv);
|
||||
EventLog dialog(&app);
|
||||
|
||||
// Get the global logger object
|
||||
finalcut::FLog& log = *finalcut::FApplication::getLog();
|
||||
|
||||
// Set the line endings (default = CRLF)
|
||||
log.setLineEnding (finalcut::FLog::LineEnding::LF);
|
||||
|
||||
// Write a timestamp before each output line
|
||||
log.enableTimestamp();
|
||||
|
||||
// Set the dialog object as output stream
|
||||
log.setOutputStream(dialog);
|
||||
|
||||
// ----------------------------------------------
|
||||
// Remove the comment characters in the following
|
||||
// two lines to log the output to a file.
|
||||
// ----------------------------------------------
|
||||
//std::ofstream file_stream("test.log", std::ofstream::out | std::ofstream::app);
|
||||
//log.setOutputStream(file_stream);
|
||||
|
||||
// Sets the dialog as main widget
|
||||
finalcut::FWidget::setMainWidget(&dialog);
|
||||
|
||||
// Show the dialog
|
||||
dialog.show();
|
||||
|
||||
// Run the application
|
||||
return app.exec();
|
||||
}
|
||||
|