This buffer is an overlay image, the img_grey_buffer is not touched.
The 'rendered' button will load the rendered image, if exists.
The 'preview' button just allocates a copy of the grey image. Later it
will be used to render to this buffer on the fly.
"\246\213\204\246\213\204\244\213\204\244\213\200\244\213\200\243\211"
"}\240\207|\237\206{\237\206{\236\204x\230~r\222yn\201so<pxdQ(l5\0`2\0"
"v=\0h.\0T(\0:\33\0""0\24\0""2\25\0O5\13.bj)t\207\27o\205\23n\205\35v"
- "\217\34w\216\32r\214\27n\233\25h\235\21`\227\0\0\244\211\202\244\211"
+ "\217\34w\216\32r\214\27n\233\25h\235\21`\227\"\12\244\211\202\244\211"
"\202\244\212~\243\211}\243\205}\237\206\177\241\207y\242\205v\237\202"
- "w\227\177u\223zo\216slfpp:\\T\\+\0\214;\0\274Y\20\270X\22\262N\22|7\0"
- "0\24\0.\22\0""2\25\0,\21\0""8\34\0FB\30\36_f\36v\214\35x\217\40{\222"
- "$|\222%}\223(}\2200{\204\40""1\244\206\202\243\205\201\243\205}\245\214"
- "u\262\225\\\247\211o\241\204u\243\205o\235\204q\222yn\216phiqq%p\203"
- "3B,h,\0\267V!\301`+\275Y\35\262M\2^*\0""0\24\0.\22\0""2\25\0.\23\0""0"
- "\25\0:\35\0BM3$p\200\"z\220\35x\217\33v\215\35{\223#{\221.\200\2140\12"
- "\224\253U\222\255S\204\2719\251\321\13\276\252\0\310\256\0\325\257\27"
- "\246\213`\227yq\220rjgoo%t\207\24hzBB,\237T\35\302a,\304a0\222A\0t9\0"
- "V(\0<\33\0N%\0D\40\0""4\27\0""6\30\0""2\26\0>\"\0/QB\40x\216\32u\214"
- "\26q\210\27v\215\33y\215\40z\212t\"h\322\0\\\304\0\\\272\0\217\240\0"
- "\230\210\0\224\204\0\240\217\0\256\227\0\302\244\0\233\2115$s\212\23"
- "o\211\24RZyE\27\256V\40\277_+\306`.\256A\6l3\0z9\0v8\0\214B\0^.\0^,\0"
- "P&\0@\36\0<\40\0H)\0!ju\33r\205\25s\207\31w\213\33y\215\36\177\210\40"
- "\"T\262\0S\260\0n\234\0\244\232\0\224\204\0\224\204\0\224\204\0\226\206"
- "\0\236\215\0\236\215\0\224\226\0\17dsYN+\216L\34fI&\242R\"\305c-\317"
- "`)\276Q\26\234B\0\242L\0\210C\0\216\77\0x8\0^,\0^.\0X+\0D#\0>B(\25m\177"
- "\23q\211\32z\210\35}\213\40~\206*\"R\256\0X\242\0\217\230\0\242\221\0"
- "\224\204\0\226\206\0\230\210\0\234\213\0\232\212\0\220\201\0\200r\0|"
- "i\0\270P\"\264B\12\2037\15\236O$\276f6\306b,\316_(\314b\"\256N\0\271"
- "O\17\267O\11\222>\0`/\0b0\0R)\0V-\0Z5\0'`a\26q\204\25p\207\31y\207\32"
- "\201\210inN\246\0d\236\0\244\236\0\236\215\0\234\213\0\240\217\0\250"
- "\226\0\244\223\0\224\204\0xh\0n]\0\316J\20\315\77#\3118\27\3115\7\273"
- "T+\273`/\274S\24\271X\27\316d$\320e*\312](\264D\0n1\0P&\0H\"\0F#\0Z*"
- "\0T1\0-OC\27fy\23n\205\27r\211\30s\212\40\"=\210\0T\216\0\222\220\0\240"
- "\217\0\246\224\0\240\217\0\230\210\0\210z\0xk\0rf\0\246f\0\3146\36\321"
- "@#\304>\32\3238\17\325\77\27\314B\22\267B\11vL\"\251W\25\312`\40\300"
- "Q\32\2549\0d-\0R'\0>\35\0""4\27\0>\35\0<\36\0+I>\25ey\26n\204\26q\210"
- "\32z\210efY~\0y\204\0\244\226\0\270\245\0\264\241\0\244\223\0\226\206"
- "\0\214}\0~q\0ra\0\274P\0\303@\35\274A(\264B(\3025\24\3251\21\3359\23"
- "\3104\6\230>\26\231\77\11\300S\22\274K\24\264C\14^*\0N%\0""6\30\0,\21"
- "\0""8\32\0""4\30\0$RN\22k~\23l\205\26t\210\33{\211\"\12\210\200\0\244"
- "\223\0\266\243\0\260\235\0\266\243\0\266\243\0\256\234\0\226\206\0\200"
- "r\0p_\0\274Q\2\274&\10\200\6\0\267\37\23\275E1\3274\31\3452\25\337>\23"
- "\325D\21\315I\17\312S\30\300Q\32\265D\15""6\31\0J#\0""6\30\0<\31\0H$"
- "\0H)\0\26^n\16i\200\22p\204\26t\210\34|\212ef\230\210\0\240\217\0\264"
- "\241\0\254\232\0\254\232\0\266\243\0\256\234\0\242\221\0\230\210\0\200"
- "o\0\250S\0\274)\2\234\4\0\222\7\0\2671\37\3263\36\345\77\31\342I\32\332"
- "M\26\326Q\26\320M\32\306Q\30\260>\0""0\25\0""6\27\0.\22\0R)\0^1\0*>."
- "\15e{\15h\177\21l\203\30s\206\31|\207\0\0\260\235\0\250\226\0\264\245"
- "\0\260\235\0\256\234\0\254\232\0\252\230\0\236\215\0\230\210\0\252\230"
- "\0\256\217\0\305W\25\306'\10\252\20\0\266\35\4\3263\30\343G\35\341P\27"
- "\330S\30\323K\25\305N\23\267D\13l0\0D\40\0:\31\0""2\25\0N'\0W<\11\31"
- "Y]\10f~\16i\200\21l\203\30x\206\33v\211\0\0\254\232\0\260\235\0\264\241"
- "\0\260\235\0\242\221\0\254\232\0\240\223\0\206\201\0\204|\0\254\232\0"
- "\260\235\0\302\216\0\312b\34\311X'\315L\37\324F\32\325M\27\323O\25\312"
- "L\24\274G\16\257>\7\212:\0d/\0f0\0h,\0V&\0\204;\0\220G\6""5K8\15bu\16"
- "i\200\22p\204\26t\210\33{\211\0\0\266\243\0\256\234\0\262\237\0\254\232"
- "\0\252\230\0\222\211\0p\204\0V\214\10k\202\0\242\225\0\264\241\0\262"
- "\233\0\272\210\0\301T\13\277L\31\301K\27\277O\27\276M\26\265D\15\253"
- "=\7\260\77\2\236;\0\254=\0|2\0n,\0\200<\0\237L\3\251M\11\235T\23:TI\15"
- "e{\24o\202\30x\206\32z\210\0\0\266\243\0\270\245\0\262\237\0\254\232"
- "\0\242\221\0\204\202\0V\200\16\302\266\0\236\244\4\210\220\0\260\235"
- "\0\264\241\0\250\222\0\234r\0\252;\4\255:\15\255>\15\252<\6\240K\0xA"
- "\0z+\0x*\0X\35\0""4\27\0N(\0\202:\0\244Y\10\243\202\17\245\202\11\225"
- "r\37+eM\21p{\33v\201\31y\207\0\0\264\241\0\266\243\0\264\241\0\256\234"
- "\0\230\210\0\244\223\0z\230\0\267\271\7\263\265\3G|\16\222\211\0\264"
- "\241\0\254\232\0\220}\0zd\0lJ\0tL\0~h\0\202q\0vd\0@'\0=-\13\16HL\23I"
- "M/;\37dR\0Y\222\0M\224\0N\226\0N\226\0A\222\0\24\202#\31}r\32|\210\0"
- "\0\270\245\0\266\243\0\266\243\0\264\241\0\232\212\0\236\215\0\230\217"
- "\0g\231\5x\240\0\222\215\0\262\243\0\264\241\0\264\241\0\226\206\0~q"
- "\0~q\0\210z\0~q\0~q\0ja\0M`\0\20`X\6`p\7aq\17cL<z\0L\232\0M\244\0P\252"
- "\0P\252\0N\246\0Q\244\0\33\205>\34w\212\0\0\272\246\0\270\245\0\266\243"
- "\0\264\241\0\240\217\0\230\210\0\250\226\0\204\202\0\224\210\0\264\241"
- "\0\262\237\0\264\241\0\266\243\0\254\232\0\236\215\0\220\201\0\210z\0"
- "\210z\0\202t\0~\200\0c\214\0@\226\0\36\227\1(\234\4S\272\0U\264\0M\244"
- "\0T\262\0T\262\0S\260\0T\262\0S\250\0\24\202+\32z\210\0\0"};
+ "waw\232$J\204\245\0\0\245\0\0\245\0\0\245\0\0\245\0\0\245\0\0\245\0\0"
+ "\245\0\0\245\0\0\245\0\0\245\0\0\245\0\0\"E|MVgFB\30\36_f\36v\214\35"
+ "x\217\40{\222$|\222%}\223(}\2200{\204xb\244\206\202\243\205\201\243\205"
+ "}\245\214u\262\225\\\247\211o\241\204u\243\205o\235\204q$J\203\204\246"
+ "\316\357()\357()\357()\357()\357()\357()\357()\357()\357()\357()\357"
+ "()\357()\214\252\326\"F|:\35\0BM3$p\200\"z\220\35x\217\33v\215\35{\223"
+ "#{\221.\200\214de\224\253U\222\255S\204\2719\251\321\13\276\252\0\310"
+ "\256\0\325\257\27\246\213`\227yq!I\204\214\252\326\316\0\0\316\0\0\316"
+ "\0\0\316\0\0\316\0\0\316\0\0\316\0\0\316\0\0\316\0\0\316\0\0\316\0\0"
+ "\316\0\0\224\256\326!I\2042\26\0>\"\0/QB\40x\216\32u\214\26q\210\27v"
+ "\215\33y\215\40z\212\40\0h\322\0\\\304\0\\\272\0\217\240\0\230\210\0"
+ "\224\204\0\240\217\0\256\227\0\302\244\0!I\204\214\252\326\377\377\377"
+ "\377\377\377\347\353\347\347\353\347\347\353\347\347\353\347\347\353"
+ "\347\347\353\347\347\353\347\347\353\347\367\367\367\377\377\377\224"
+ "\256\326!I\204@\36\0<\40\0H)\0!ju\33r\205\25s\207\31w\213\33y\215\36"
+ "\177\210\40""1T\262\0S\260\0n\234\0\244\232\0\224\204\0\224\204\0\224"
+ "\204\0\226\206\0\236\215\0!I\204\214\246\326\377\377\377\377\373\377"
+ "\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347\347"
+ "\347\347\347\347\347\347\347\367\367\367\377\377\377\214\256\326!I\204"
+ "^.\0X+\0D#\0>B(\25m\177\23q\211\32z\210\35}\213\40~\206itR\256\0X\242"
+ "\0\217\230\0\242\221\0\224\204\0\226\206\0\230\210\0\234\213\0\232\212"
+ "\0!I\204\204\246\316\377\377\377\377\377\377\367\363\357\367\363\357"
+ "\367\363\357\367\363\357\367\363\357\367\363\357\367\363\357\367\363"
+ "\357\377\373\377\377\377\377\214\252\326!I\204b0\0R)\0V-\0Z5\0'`a\26"
+ "q\204\25p\207\31y\207\32\201\210apN\246\0d\236\0\244\236\0\236\215\0"
+ "\234\213\0\240\217\0\250\226\0\244\223\0\224\204\0!I\204\204\242\316"
+ "\377\377\377\377\373\377\336\337\336\336\337\336\336\337\336\336\337"
+ "\336\336\337\336\336\337\336\336\337\336\336\337\336\367\363\367\377"
+ "\377\377\214\252\326!I\204H\"\0F#\0Z*\0T1\0-OC\27fy\23n\205\27r\211\30"
+ "s\212\40\0=\210\0T\216\0\222\220\0\240\217\0\246\224\0\240\217\0\230"
+ "\210\0\210z\0xk\0!I\204{\242\316\265\307\347\367\367\377\367\373\377"
+ "\367\373\377\367\373\377\367\373\377\367\373\377\367\373\377\367\373"
+ "\377\367\373\377\367\367\377\265\313\347\204\246\316!I\204>\35\0""4\27"
+ "\0>\35\0<\36\0+I>\25ey\26n\204\26q\210\32z\210neY~\0y\204\0\244\226\0"
+ "\270\245\0\264\241\0\244\223\0\226\206\0\214}\0~q\0!I\204{\236\316Z\206"
+ "\275Jm\224R]ZRURRURRURRURRURRURZ]ZBe\214Jy\265\204\242\316!I\2046\30"
+ "\0,\21\0""8\32\0""4\30\0$RN\22k~\23l\205\26t\210\33{\211xb\210\200\0"
+ "\244\223\0\266\243\0\260\235\0\266\243\0\266\243\0\256\234\0\226\206"
+ "\0\200r\0!I\204s\232\306Z\206\275R]Z\265\262\255\316\317\316\316\313"
+ "\316\326\323\326\336\337\336\357\353\357\377\373\377\316\317\316Z]cB"
+ "q\255{\236\316!I\2046\30\0<\31\0H$\0H)\0\26^n\16i\200\22p\204\26t\210"
+ "\34|\212\0\0\230\210\0\240\217\0\264\241\0\254\232\0\254\232\0\266\243"
+ "\0\256\234\0\242\221\0\230\210\0!I\204k\226\306R\202\275RUR\316\317\316"
+ "kqsRURcec\357\353\357\377\373\377\367\363\367\347\343\347RURBq\255s\232"
+ "\306!I\204.\22\0R)\0^1\0*>.\15e{\15h\177\21l\203\30s\206\31|\207\0\0"
+ "\260\235\0\250\226\0\264\245\0\260\235\0\256\234\0\254\232\0\252\230"
+ "\0\236\215\0\230\210\0!I\204k\222\306R}\275RUR\326\323\326ZacZ}\255R"
+ "UR\367\367\367\367\363\367\336\333\336\316\317\316RURBu\265k\226\306"
+ "!I\2042\25\0N'\0W<\11\31Y]\10f~\16i\200\21l\203\30x\206\33v\211\0\0\254"
+ "\232\0\260\235\0\264\241\0\260\235\0\242\221\0\254\232\0\240\223\0\206"
+ "\201\0\204|\0!I\204c\212\275J}\265RUR\336\333\336cacZ}\255RUR\357\357"
+ "\357\336\333\336\306\303\306\306\303\306RURJu\265k\216\306!I\204V&\0"
+ "\204;\0\220G\6""5K8\15bu\16i\200\22p\204\26t\210\33{\211\0\0\266\243"
+ "\0\256\234\0\262\237\0\254\232\0\252\230\0\222\211\0p\204\0V\214\10k"
+ "\202\0!I\204R\202\265R}\265RUR\357\353\357susRURcec\336\337\336\306\303"
+ "\306\255\256\255\275\276\275RURJu\265c\212\275!I\204\200<\0\237L\3\251"
+ "M\11\235T\23:TI\15e{\24o\202\30x\206\32z\210\0\0\266\243\0\270\245\0"
+ "\262\237\0\254\232\0\242\221\0\204\202\0V\200\16\302\266\0\236\244\4"
+ "w\213\2161Y\224R}\265RUR\367\363\367\377\377\377\367\367\367\357\353"
+ "\357\326\327\326\306\307\306\306\307\306\306\303\306RURZ\206\275R}\265"
+ "3<N\202:\0\244Y\10\243\202\17\245\202\11\225r\37+eM\21p{\33v\201\31y"
+ "\207\0\0\264\241\0\266\243\0\264\241\0\256\234\0\230\210\0\244\223\0"
+ "z\230\0\267\271\7\263\265\3V\206\"x\207l!I\204RYZRURRURRURRURRURRURR"
+ "URRURRYZ!I\204\33In0=\"dR\0Y\222\0M\224\0N\226\0N\226\0A\222\0\24\202"
+ "#\31}r\32|\210\0\0\270\245\0\266\243\0\266\243\0\264\241\0\232\212\0"
+ "\236\215\0\230\217\0g\231\5x\240\0\222\215\0\262\243\0\264\241\0\264"
+ "\241\0\226\206\0~q\0~q\0\210z\0~q\0~q\0ja\0M`\0\20`X\6`p\7aq\17cL<z\0"
+ "L\232\0M\244\0P\252\0P\252\0N\246\0Q\244\0\33\205>\34w\212\0\0\272\246"
+ "\0\270\245\0\266\243\0\264\241\0\240\217\0\230\210\0\250\226\0\204\202"
+ "\0\224\210\0\264\241\0\262\237\0\264\241\0\266\243\0\254\232\0\236\215"
+ "\0\220\201\0\210z\0\210z\0\202t\0~\200\0c\214\0@\226\0\36\227\1(\234"
+ "\4S\272\0U\264\0M\244\0T\262\0T\262\0S\260\0T\262\0S\250\0\24\202+\32"
+ "z\210\0\0"};
/* height (19) */
"\0\0\0\23"
/* pixel_data: */
- "\326_[\326_[\326_[\326_[\326_[\326^Y\325ZV\325YT\325YT\323TP\321LH\320"
- "FA\315;6\2702-\233*&}\"\36x\40\35\210%!u\37\34h\34\31S\26\24I\24\22K"
- "\24\22u\37\34\245-(\2702-\255/*\252.)\2702-\2702-\2620+\256/+\250-)\235"
- "*&\0\0\326^Y\326^Y\326_[\326^Y\325YT\325YT\325ZV\324VQ\323SN\321LH\320"
- "HC\315=8\30350\240+'m\35\32\216&#\2764/\2722-\256/+\206$!I\24\22F\23"
- "\21K\24\22E\22\21S\26\24\201#\40\233*&\2702-\2702-\2764/\3004/\3004/"
- "\3004/\3004/\40""1\325ZV\325YT\325YT\326_[\331id\326^Y\323TP\324VQ\323"
- "SN\320FA\315;6\30661\2620+}\"\36s\37\34\2722-\31271\2764/\253.*m\35\32"
- "I\24\22F\23\21K\24\22F\23\21I\24\22V\27\25\220'#\2620+\2764/\2702-\266"
- "1-\2764/\2764/\306610\12\334ws\335xt\335{x\345\233\230\335xt\336\200"
- "}\340\210\205\326^Y\320HC\315=8\3024/\2702-\245-(\201#\40\2600+\3137"
- "2\31483\226)%\203#\40i\34\32S\26\24e\33\30[\30\26P\25\23Q\26\24K\24\22"
- "[\30\26\220'#\2722-\2651,\256/+\2651,\2702-\2753.t\"\340\210\205\334"
- "ws\332mi\327a\\\321KF\320FA\323SN\327a\\\333sp\323SN\2661-\253.*\210"
- "%!\226)%\2702-\31061\31372\240+'{!\36\206$!\203#\40\226)%q\37\34n\36"
- "\33f\34\31Y\30\26Y\30\26h\34\31\252.)\2620+\2600+\2661-\2702-\3004/\40"
- "\"\327a\\\326_[\323SN\327a\\\320FA\320FA\320FA\321ID\323QL\323QL\325"
- "YT\235*&\226)%\245-(\226)%\2600+\31483\31483\2661-\232*%\245-(\226)%"
- "\222'#\206$!n\36\33q\37\34m\35\32^\31\27\201#\40\252.)\256/+\2722-\276"
- "4/\3004/*\"\326^Y\323SN\325YT\324VQ\320FA\321ID\321KF\323QL\321LH\317"
- "A<\3024/\2702-\2651,\243,(\210%!\253.*\31483\31483\31483\31483\253.*"
- "\2620+\2600+\222'#s\37\34u\37\34i\34\32m\35\32y!\36\240+'\256/+\255/"
- "*\2702-\3004/in\323SN\323QL\327d`\323QL\323QL\323SN\326_[\325ZV\320F"
- "A\2661-\250-)\2631,\252.)\240+'\232*%\2722-\31061\2702-\2753.\315;6\315"
- "=8\31061\245-({!\36f\34\31`\32\27`\32\27m\35\32q\37\34\215&\"\245-(\252"
- ".)\2600+\2620+\40\"\30350\315=8\323QL\323SN\325ZV\323SN\321KF\31483\270"
- "2-\2620+\3004/\240+'\253.*\245-(\243,(\252.)\252.)\245-(\233*&\2661-"
- "\31372\2702-\226)%q\37\34h\34\31X\30\25P\25\23X\30\25X\30\25\206$!\242"
- ",'\253.*\256/+\2722-ef\3024/\315=8\326^Y\333rn\332mi\325ZV\321ID\315"
- "=8\3004/\255/*\2620+\245-(\245-(\245-(\232*%\233*&\245-(\232*%\226)%"
- "\226)%\2702-\256/+\245-(m\35\32e\33\30Q\26\24E\22\21S\26\24P\25\23\216"
- "&#\245-(\252.)\2620+\2753.\"\12\315=8\325ZV\332mi\330gc\332mi\332mi\330"
- "ea\321ID\3024/\252.)\2631,\210%!S\26\24\200#\37\253.*\242,'\243,(\253"
- ".*\256/+\2620+\2753.\2702-\245-(Q\26\24`\32\27Q\26\24S\26\24`\32\27h"
- "\34\31\232*%\245-(\253.*\2620+\2764/ef\321KF\323SN\332mi\327d`\327d`"
- "\332mi\330ea\324VQ\321KF\3004/\256/+\210%!Y\30\26Y\30\26\225($\240+'"
- "\2600+\2702-\2722-\2764/\2702-\2702-\233*&I\24\22P\25\23F\23\21i\34\32"
- "u\37\34y!\36\240+'\243,(\250-)\2620+\2753.\0\0\330gc\326_[\333pl\330"
- "gc\330ea\327d`\327a\\\323QL\321KF\327a\\\325YT\2764/\215&\"m\35\32{!"
- "\36\240+'\2702-\3004/\3004/\2661-\2651,\245-(y!\36[\30\26Q\26\24K\24"
- "\22f\34\31\200#\37\225($\240+'\245-(\250-)\2702-\2661-\0\0\327d`\330"
- "gc\332mi\330gc\324VQ\327d`\325YT\316>9\31483\327d`\330gc\326_[\31483"
- "\3004/\2661-\2620+\2702-\2722-\2651,\252.)\233*&\215&\"u\37\34x\40\35"
- "s\37\34h\34\31\213&\"\233*&\210%!\232*%\245-(\253.*\2620+\2753.\0\0\332"
- "mi\330ea\331jf\327d`\327a\\\321KF\315;6\315=8\31483\325ZV\332mi\330e"
- "a\323TP\2702-\2620+\2600+\2651,\2620+\245-(\232*%\235*&\225($\232*%\200"
- "#\37u\37\34\213&\"\245-(\252.)\256/+\226)%\240+'\253.*\2702-\2722-\0"
- "\0\332mi\333rn\331jf\327d`\324VQ\316>9\30661\340\206\203\331id\322PK"
- "\330gc\332mi\325ZV\31483\226)%\226)%\233*&\226)%\245-(\216&#y!\36x\40"
- "\35^\31\27P\25\23h\34\31\210%!\2651,\321KF\321KF\31483\245-(\253.*\265"
- "1,\2702-\0\0\332mi\332mi\332mi\330ea\321KF\325ZV\323SN\340\210\205\337"
- "\202~\2764/\321KF\332mi\327d`\315=8\2620+\225($\226)%\2702-\3004/\262"
- "0+`\32\27h\34\31{!\36\200#\37s\37\34\232*%\317A<\316@;\317C>\317C>\315"
- ";6\2661-\2722-\2753.\0\0\333rn\332mi\332mi\332mi\321LH\323QL\323SN\322"
- "PK\325ZV\322PK\332mi\332mi\332mi\321ID\3004/\3004/\31483\3004/\3004/"
- "\252.)\242,'\226)%\226)%\226)%\226)%\2661-\320FA\323QL\325YT\325YT\323"
- "SN\323SN\2764/\2702-\0\0\333sp\333rn\332mi\332mi\323SN\321KF\326_[\316"
- ">9\321KF\332mi\331jf\332mi\332mi\327d`\323QL\317A<\31483\31483\30661"
- "\315;6\316>9\316>9\31372\315=8\331id\327d`\323QL\327a\\\327a\\\326_["
- "\327a\\\324VQ\2661-\2722-\0\0"};
+ "\246\213\204\246\213\204\244\213\204\244\213\200\244\213\200\243\211"
+ "}\240\207|\237\206{\237\206{\236\204x\230~r\222yn\201so<pxdQ(l5\0`2\0"
+ "v=\0h.\0T(\0:\33\0""0\24\0""2\25\0O5\13.bj)t\207\27o\205\23n\205\35v"
+ "\217\34w\216\32r\214\27n\233\25h\235\21`\227\0\0\244\211\202\244\211"
+ "\202\244\212~\243\211}\243\205}\237\206\177\241\207y\242\205v\237\202"
+ "w\227\177u\223zo\216slfpp:\\T\\+\0\214;\0\274Y\20\270X\22\262N\22|7\0"
+ "0\24\0.\22\0""2\25\0,\21\0""8\34\0FB\30\36_f\36v\214\35x\217\40{\222"
+ "$|\222%}\223(}\2200{\204\40""1\244\206\202\243\205\201\243\205}\245\214"
+ "u\262\225\\\247\211o\241\204u\243\205o\235\204q\222yn\216phiqq%p\203"
+ "3B,h,\0\267V!\301`+\275Y\35\262M\2^*\0""0\24\0.\22\0""2\25\0.\23\0""0"
+ "\25\0:\35\0BM3$p\200\"z\220\35x\217\33v\215\35{\223#{\221.\200\2140\12"
+ "\224\253U\222\255S\204\2719\251\321\13\276\252\0\310\256\0\325\257\27"
+ "\246\213`\227yq\220rjgoo%t\207\24hzBB,\237T\35\302a,\304a0\222A\0t9\0"
+ "V(\0<\33\0N%\0D\40\0""4\27\0""6\30\0""2\26\0>\"\0/QB\40x\216\32u\214"
+ "\26q\210\27v\215\33y\215\40z\212t\"h\322\0\\\304\0\\\272\0\217\240\0"
+ "\230\210\0\224\204\0\240\217\0\256\227\0\302\244\0\233\2115$s\212\23"
+ "o\211\24RZyE\27\256V\40\277_+\306`.\256A\6l3\0z9\0v8\0\214B\0^.\0^,\0"
+ "P&\0@\36\0<\40\0H)\0!ju\33r\205\25s\207\31w\213\33y\215\36\177\210\40"
+ "\"T\262\0S\260\0n\234\0\244\232\0\224\204\0\224\204\0\224\204\0\226\206"
+ "\0\236\215\0\236\215\0\224\226\0\17dsYN+\216L\34fI&\242R\"\305c-\317"
+ "`)\276Q\26\234B\0\242L\0\210C\0\216\77\0x8\0^,\0^.\0X+\0D#\0>B(\25m\177"
+ "\23q\211\32z\210\35}\213\40~\206*\"R\256\0X\242\0\217\230\0\242\221\0"
+ "\224\204\0\226\206\0\230\210\0\234\213\0\232\212\0\220\201\0\200r\0|"
+ "i\0\270P\"\264B\12\2037\15\236O$\276f6\306b,\316_(\314b\"\256N\0\271"
+ "O\17\267O\11\222>\0`/\0b0\0R)\0V-\0Z5\0'`a\26q\204\25p\207\31y\207\32"
+ "\201\210inN\246\0d\236\0\244\236\0\236\215\0\234\213\0\240\217\0\250"
+ "\226\0\244\223\0\224\204\0xh\0n]\0\316J\20\315\77#\3118\27\3115\7\273"
+ "T+\273`/\274S\24\271X\27\316d$\320e*\312](\264D\0n1\0P&\0H\"\0F#\0Z*"
+ "\0T1\0-OC\27fy\23n\205\27r\211\30s\212\40\"=\210\0T\216\0\222\220\0\240"
+ "\217\0\246\224\0\240\217\0\230\210\0\210z\0xk\0rf\0\246f\0\3146\36\321"
+ "@#\304>\32\3238\17\325\77\27\314B\22\267B\11vL\"\251W\25\312`\40\300"
+ "Q\32\2549\0d-\0R'\0>\35\0""4\27\0>\35\0<\36\0+I>\25ey\26n\204\26q\210"
+ "\32z\210efY~\0y\204\0\244\226\0\270\245\0\264\241\0\244\223\0\226\206"
+ "\0\214}\0~q\0ra\0\274P\0\303@\35\274A(\264B(\3025\24\3251\21\3359\23"
+ "\3104\6\230>\26\231\77\11\300S\22\274K\24\264C\14^*\0N%\0""6\30\0,\21"
+ "\0""8\32\0""4\30\0$RN\22k~\23l\205\26t\210\33{\211\"\12\210\200\0\244"
+ "\223\0\266\243\0\260\235\0\266\243\0\266\243\0\256\234\0\226\206\0\200"
+ "r\0p_\0\274Q\2\274&\10\200\6\0\267\37\23\275E1\3274\31\3452\25\337>\23"
+ "\325D\21\315I\17\312S\30\300Q\32\265D\15""6\31\0J#\0""6\30\0<\31\0H$"
+ "\0H)\0\26^n\16i\200\22p\204\26t\210\34|\212ef\230\210\0\240\217\0\264"
+ "\241\0\254\232\0\254\232\0\266\243\0\256\234\0\242\221\0\230\210\0\200"
+ "o\0\250S\0\274)\2\234\4\0\222\7\0\2671\37\3263\36\345\77\31\342I\32\332"
+ "M\26\326Q\26\320M\32\306Q\30\260>\0""0\25\0""6\27\0.\22\0R)\0^1\0*>."
+ "\15e{\15h\177\21l\203\30s\206\31|\207\0\0\260\235\0\250\226\0\264\245"
+ "\0\260\235\0\256\234\0\254\232\0\252\230\0\236\215\0\230\210\0\252\230"
+ "\0\256\217\0\305W\25\306'\10\252\20\0\266\35\4\3263\30\343G\35\341P\27"
+ "\330S\30\323K\25\305N\23\267D\13l0\0D\40\0:\31\0""2\25\0N'\0W<\11\31"
+ "Y]\10f~\16i\200\21l\203\30x\206\33v\211\0\0\254\232\0\260\235\0\264\241"
+ "\0\260\235\0\242\221\0\254\232\0\240\223\0\206\201\0\204|\0\254\232\0"
+ "\260\235\0\302\216\0\312b\34\311X'\315L\37\324F\32\325M\27\323O\25\312"
+ "L\24\274G\16\257>\7\212:\0d/\0f0\0h,\0V&\0\204;\0\220G\6""5K8\15bu\16"
+ "i\200\22p\204\26t\210\33{\211\0\0\266\243\0\256\234\0\262\237\0\254\232"
+ "\0\252\230\0\222\211\0p\204\0V\214\10k\202\0\242\225\0\264\241\0\262"
+ "\233\0\272\210\0\301T\13\277L\31\301K\27\277O\27\276M\26\265D\15\253"
+ "=\7\260\77\2\236;\0\254=\0|2\0n,\0\200<\0\237L\3\251M\11\235T\23:TI\15"
+ "e{\24o\202\30x\206\32z\210\0\0\266\243\0\270\245\0\262\237\0\254\232"
+ "\0\242\221\0\204\202\0V\200\16\302\266\0\236\244\4\210\220\0\260\235"
+ "\0\264\241\0\250\222\0\234r\0\252;\4\255:\15\255>\15\252<\6\240K\0xA"
+ "\0z+\0x*\0X\35\0""4\27\0N(\0\202:\0\244Y\10\243\202\17\245\202\11\225"
+ "r\37+eM\21p{\33v\201\31y\207\0\0\264\241\0\266\243\0\264\241\0\256\234"
+ "\0\230\210\0\244\223\0z\230\0\267\271\7\263\265\3G|\16\222\211\0\264"
+ "\241\0\254\232\0\220}\0zd\0lJ\0tL\0~h\0\202q\0vd\0@'\0=-\13\16HL\23I"
+ "M/;\37dR\0Y\222\0M\224\0N\226\0N\226\0A\222\0\24\202#\31}r\32|\210\0"
+ "\0\270\245\0\266\243\0\266\243\0\264\241\0\232\212\0\236\215\0\230\217"
+ "\0g\231\5x\240\0\222\215\0\262\243\0\264\241\0\264\241\0\226\206\0~q"
+ "\0~q\0\210z\0~q\0~q\0ja\0M`\0\20`X\6`p\7aq\17cL<z\0L\232\0M\244\0P\252"
+ "\0P\252\0N\246\0Q\244\0\33\205>\34w\212\0\0\272\246\0\270\245\0\266\243"
+ "\0\264\241\0\240\217\0\230\210\0\250\226\0\204\202\0\224\210\0\264\241"
+ "\0\262\237\0\264\241\0\266\243\0\254\232\0\236\215\0\220\201\0\210z\0"
+ "\210z\0\202t\0~\200\0c\214\0@\226\0\36\227\1(\234\4S\272\0U\264\0M\244"
+ "\0T\262\0T\262\0S\260\0T\262\0S\250\0\24\202+\32z\210\0\0"};
int img_width, img_height;
int copy_width, copy_height;
char img_name[256];
-unsigned short *img_grey_buffer = NULL;
+unsigned short *img_grey_buffer = NULL, *img_preview_buffer = NULL;
unsigned char *img_mark_buffer = NULL, *img_mark_buffer_undo[UNDO_MAX], *img_mark_buffer_copy;
int button_down_x_undo[UNDO_MAX], button_down_y_undo[UNDO_MAX];
int undo_current, undo_num;
/* load image and create pixbuf */
void create_image(const char *filename, int resize)
{
- static char imgfile[256];
-
destroy_image();
anything_modified = 0;
strcpy(img_name, filename);
- if (rendered) {
- const char *p, *q;
- p = filename;
- while((q = strchr(p, DIR_SEPERATOR)))
- p = q + 1;
- strcpy(imgfile, filename);
- imgfile[p - filename] = '\0';
- strcat(imgfile, "colorized_");
- strcat(imgfile, p);
- } else
- strcpy(imgfile, filename);
- img_grey_buffer = load_img(&img_width, &img_height, imgfile, 0);
+ img_grey_buffer = load_img(&img_width, &img_height, filename, 0);
if (!img_grey_buffer) {
- img_grey_buffer = NULL;
- if (!rendered)
- printerror("Failed to load grey image '%s'", imgfile);
- else {
- img_width = 16;
- img_height = 16;
- goto no_mark;
- }
+ printerror("Failed to load grey image '%s'", filename);
return;
}
+ if (preview)
+ create_preview();
+ else if (rendered)
+ create_rendered(filename);
img_mark_buffer = malloc(img_width*img_height);
if (!img_mark_buffer) {
free(img_grey_buffer);
img_grey_buffer = NULL;
+ destroy_preview();
return;
}
memset(img_mark_buffer, 0, img_width*img_height);
frame_list[timeline_selected].marked = 0;
}
-no_mark:
/* create pixbuf */
create_or_reset_pixbuf(resize);
}
+void create_preview()
+{
+ size_t size = img_width*img_height*3*sizeof(*img_preview_buffer);
+
+ destroy_preview();
+
+ /* no grey image, so no preview */
+ if (!img_grey_buffer) {
+ return;
+ }
+
+ img_preview_buffer = malloc(size);
+ if (!img_preview_buffer) {
+ return;
+ }
+
+ memcpy(img_preview_buffer, img_grey_buffer, size);
+}
+
+void create_rendered(const char *filename)
+{
+ static char imgfile[256];
+ const char *p, *q;
+ int width, height;
+
+ destroy_preview();
+
+ /* no grey image, so no preview */
+ if (!img_grey_buffer) {
+ return;
+ }
+
+ p = filename;
+ while((q = strchr(p, DIR_SEPERATOR)))
+ p = q + 1;
+ strcpy(imgfile, filename);
+ imgfile[p - filename] = '\0';
+ strcat(imgfile, "colorized_");
+ strcat(imgfile, p);
+
+ img_preview_buffer = load_img(&width, &height, imgfile, 0);
+ if (!img_preview_buffer) {
+ printerror("Failed to load rendered image '%s'", imgfile);
+ return;
+ }
+ if (width != img_width || height != img_height) {
+ printerror("Failed to load: Rendered image '%s' has different size", imgfile);
+ destroy_preview();
+ return;
+ }
+}
+
void create_or_reset_pixbuf(int resize)
{
int w, h, dw = 0, dh = 0;
free(img_grey_buffer);
img_grey_buffer = NULL;
+ destroy_preview();
free(img_mark_buffer);
img_mark_buffer = NULL;
for (i = 0; i < UNDO_MAX; i++) {
}
}
+void destroy_preview(void)
+{
+ free(img_preview_buffer);
+ img_preview_buffer = NULL;
+}
+
/* draw (area) of pixbuf */
void draw_image(int x, int y, int w, int h)
{
GdkDrawable *draw = gtk_widget_get_window(img_drawing_area);
int window_width, window_height, x_offset, y_offset;
gdk_drawable_get_size (draw, &window_width, &window_height);
- double _r, _g, _b, _y, _u, _v, u_palette, v_palette, pat, alpha;
+ double _r, _g, _b, pat, alpha;
int cr, cg, cb;
- int _c, preview_asis = 0;
if (w < 0)
w = window_width;
y -= y_offset;
if (img_grey_buffer) {
- if (preview) {
- rgb2yuv_pixle(mark_palette[mark_selected].r / 255.0F, mark_palette[mark_selected].g / 255.0F, mark_palette[mark_selected].b / 255.0F, &_y, &u_palette, &v_palette);
- /* check for white color (no change) */
- if (mark_palette[mark_selected].r == 255 && mark_palette[mark_selected].g == 255 && mark_palette[mark_selected].r == 255)
- preview_asis = 1;
- }
/* compose image (segment) line by line */
for (i = 0; i < h; i++) {
for (j = 0; j < w; j++) {
- if (preview && !rendered && !flowview) {
- /* apply selected color from palette to all pixles */
- _r = img_grey_buffer[((j+x)*16/img_scale_x+img_width*((i+y)*16/img_scale_y))*3] / 65535.0F;
- _g = img_grey_buffer[((j+x)*16/img_scale_x+img_width*((i+y)*16/img_scale_y))*3+1] / 65535.0F;
- _b = img_grey_buffer[((j+x)*16/img_scale_x+img_width*((i+y)*16/img_scale_y))*3+2] / 65535.0F;
- rgb2yuv_pixle(_r, _g, _b, &_y, &_u, &_v);
- _y = (_y - 0.5) * mark_palette[mark_selected].contrast + 0.5;
- _y += mark_palette[mark_selected].bright;
- if (_y < 0)
- _y = 0;
- if (_y > 1)
- _y = 1;
- if (preview_asis)
- yuv2rgb_pixle(_y, _u, _v, &_r, &_g, &_b);
- else
- yuv2rgb_pixle(_y, u_palette, v_palette, &_r, &_g, &_b);
- _c = _r * 255.0F;
- if (_c < 0)
- _c = 0;
- else if (_c > 255)
- _c = 255;
- compose[j*3] = _c;
- _c = _g * 255.0F;
- if (_c < 0)
- _c = 0;
- else if (_c > 255)
- _c = 255;
- compose[j*3+1] = _c;
- _c = _b * 255.0F;
- if (_c < 0)
- _c = 0;
- else if (_c > 255)
- _c = 255;
- compose[j*3+2] = _c;
-
+ if (img_preview_buffer) {
+ /* show preview buffer */
+ compose[j*3] = img_preview_buffer[((j+x)*16/img_scale_x+img_width*((i+y)*16/img_scale_y))*3] >> 8;
+ compose[j*3+1] = img_preview_buffer[((j+x)*16/img_scale_x+img_width*((i+y)*16/img_scale_y))*3+1] >> 8;
+ compose[j*3+2] = img_preview_buffer[((j+x)*16/img_scale_x+img_width*((i+y)*16/img_scale_y))*3+2] >> 8;
} else {
+ /* show grey buffer */
compose[j*3] = img_grey_buffer[((j+x)*16/img_scale_x+img_width*((i+y)*16/img_scale_y))*3] >> 8;
compose[j*3+1] = img_grey_buffer[((j+x)*16/img_scale_x+img_width*((i+y)*16/img_scale_y))*3+1] >> 8;
compose[j*3+2] = img_grey_buffer[((j+x)*16/img_scale_x+img_width*((i+y)*16/img_scale_y))*3+2] >> 8;
extern GdkPixbuf *img_pixbuf;
extern int img_width, img_height;
extern char img_name[];
-extern unsigned short *img_grey_buffer;
+extern unsigned short *img_grey_buffer, *img_preview_buffer;
extern unsigned char *img_mark_buffer;
extern int img_scale_x, img_scale_y;
extern int anything_modified;
void create_image(const char *filename, int resize);
+void create_preview();
+void create_rendered(const char *filename);
void create_or_reset_pixbuf(int resize);
void destroy_image(void);
+void destroy_preview(void);
void draw_image(int x, int y, int w, int h);
void paint_brush(int x, int y, int size, int paint);
void erase_mark(int index);
void colorize_event(gpointer priv)
{
- if (rendered) {
- printerror("Disable colorized view first.");
- return;
- }
#ifdef WITH_OPENCV
if (flowview) {
printerror("Disable flow view first.");
void preview_button_toggled(GtkButton *button, gpointer index)
{
preview = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
+ if (preview) {
+ create_preview();
+ if (!img_preview_buffer)
+ preview = 0;
+ } else if (!rendered)
+ destroy_preview();
+ set_button_toggel_by_label(TOGGLE_LABEL_PREVIEW, preview);
set_menu_toggel_by_label(TOGGLE_LABEL_PREVIEW, preview);
draw_image(0, 0, -1, -1);
+
+ if (preview && rendered) {
+ rendered = 0;
+ set_button_toggel_by_label(TOGGLE_LABEL_RENDERED, rendered);
+ set_menu_toggel_by_label(TOGGLE_LABEL_RENDERED, rendered);
+ }
}
void palette_button_clicked(GtkButton *button, gpointer index)
rendered = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
else
rendered = 0;
+ if (rendered) {
+ create_rendered(img_name);
+ if (!img_preview_buffer)
+ rendered = 0;
+ } else if (!preview)
+ destroy_preview();
gtk_toggle_button_set_active(show_colorized_button, rendered);
set_menu_toggel_by_label(TOGGLE_LABEL_RENDERED, rendered);
- timeline_select_and_save(timeline_selected, timeline_selected);
+ draw_image(0, 0, -1, -1);
+
+ if (rendered && preview) {
+ preview = 0;
+ set_button_toggel_by_label(TOGGLE_LABEL_PREVIEW, preview);
+ set_menu_toggel_by_label(TOGGLE_LABEL_PREVIEW, preview);
+ }
}
#ifdef WITH_OPENCV