Initial checkin of Pika from heckimp

This commit is contained in:
2023-09-25 15:35:21 -07:00
commit 891e999216
6761 changed files with 5240685 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,66 @@
brushes = [
'arrow01.pgm',
'ball.ppm',
'blob.ppm',
'box.ppm',
'chalk01.pgm',
'cone.ppm',
'crayon01.pgm',
'crayon02.pgm',
'crayon03.pgm',
'crayon04.pgm',
'crayon05.pgm',
'crayon06.pgm',
'crayon07.pgm',
'crayon08.pgm',
'defaultbrush.pgm',
'dribble.pgm',
'fabric.pgm',
'fabric01.pgm',
'fabric02.pgm',
'fabric03.pgm',
'flower01.pgm',
'flower02.pgm',
'flower03.pgm',
'flower04.pgm',
'grad01.pgm',
'grad02.pgm',
'grad03.pgm',
'heart.ppm',
'leaf01.pgm',
'paintbrush01.pgm',
'paintbrush02.pgm',
'paintbrush03.pgm',
'paintbrush04.pgm',
'paper01.pgm',
'paper02.pgm',
'paper03.pgm',
'paper04.pgm',
'pentagram.pgm',
'scribble.pgm',
'shape01.pgm',
'shape02.pgm',
'shape03.pgm',
'shape04.pgm',
'snow1.pgm',
'sphere.ppm',
'splat1.pgm',
'splat2.pgm',
'splat3.pgm',
'spunge01.pgm',
'spunge02.pgm',
'spunge03.pgm',
'spunge04.pgm',
'spunge05.pgm',
'strange01.pgm',
'thepika.pgm',
'torus.ppm',
'wavy.pgm',
'weave.pgm',
'worm.pgm',
]
install_data(
brushes,
install_dir: pikadatadir / 'pikaressionist' / 'Brushes',
)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,43 @@
P5
# CREATOR: The GIMP's PNM Filter Version 1.0
96 95
255
<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>©<EFBFBD>ױ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD>˭<EFBFBD>ٳ<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ė<EFBFBD>Ӛ<EFBFBD><D39A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>th<74>~<7E>w<EFBFBD>uj}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD><CDB0><EFBFBD>˪<EFBFBD><CBAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD>o<EFBFBD>r}<7D>fbaq<61><71>ȁ<EFBFBD><C881>S<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}|]`<60>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><6C>n<EFBFBD><6E><EFBFBD><EFBFBD>l<EFBFBD>Ui<55><69><EFBFBD>#9ŕn<C595><6E><EFBFBD><EFBFBD>pvƥu<C6A5><75><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>r<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD>N<>Ü<EFBFBD><C39C>sGX`-wzvr<76><72><EFBFBD><EFBFBD><EFBFBD>q_x<5F>Ukpzuy<75><79>G<EFBFBD><47> <20><><EFBFBD><EFBFBD>k<EFBFBD>~<7E><>Z{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><6C>w<77><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD>OȮ<><C8AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD>O_r<5F>o<EFBFBD><6F><EFBFBD>^drm<72><6D><EFBFBD> <20>ʇ<EFBFBD><CA87><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD>z<EFBFBD><7A>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>zdr<64><72><EFBFBD><EFBFBD>×"<04><>|~}<7D><><EFBFBD>uA|<7C><><EFBFBD><EFBFBD>}<7D><><EFBFBD>&pc`Ywy<77>Kc<63><7F>y<EFBFBD> <19><><EFBFBD><EFBFBD>{<7B><>s<EFBFBD><73><EFBFBD><EFBFBD>t<EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~z<><7A><EFBFBD>}<7D><>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x~[t<><74><EFBFBD><EFBFBD><EFBFBD>I
<06><><EFBFBD><EFBFBD>g<EFBFBD>{<7B>'z<>W<EFBFBD>q<EFBFBD>}<7D><><EFBFBD>Vwvjn]}<7D>W4}<7D><><EFBFBD>Wv<>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>gof<6F>vp<76><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F>vžtm}fN+:<3A>}<7D><>g<EFBFBD>x<EFBFBD><78>~mttlpS<70><53>}<7D><><EFBFBD><EFBFBD><EFBFBD>Sh<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D>|o<>}<7D>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xq`l^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD>Wn<57>z&<04><>3|sx<73><78>dg<64><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>|w<><77><EFBFBD><EFBFBD>|y<><79><EFBFBD><EFBFBD><EFBFBD> -<2D><>bkl<6B>\<5C><><EFBFBD><EFBFBD>w<EFBFBD>T<EFBFBD><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B><><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD><EFBFBD>Pgv k<><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|u<><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y|zm<7A>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w}<7D><><EFBFBD>K^<5E><><EFBFBD>_T  `<60><><EFBFBD>v<EFBFBD><76><EFBFBD>yl<79><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>omj<6D>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD><0E>}tZ<74><5A><EFBFBD>p}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~x<><78><EFBFBD><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HFT=QIt_qPԧ˳<D4A7><CBB3><EFBFBD>yj<6A><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}}<7D><><EFBFBD><EFBFBD>iy<69>Y}<7D><><EFBFBD><08>~<7E><><EFBFBD><EFBFBD>oJd<4A><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Jq<4A><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ha^<5E>ob<6F>l<EFBFBD>$kֿ<6B><D6BF><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D><>}<7D>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11>q<EFBFBD><71><EFBFBD>{vG`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>~<7E>x<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>sxb/<2F>U<EFBFBD>|]-
u<><75>ț<EFBFBD><C89B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>{yn<79><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><06><><EFBFBD>[<5B><><EFBFBD>c<EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD>pqm<71><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>h{<7B>x<EFBFBD>~j}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u_\U<>Y]<5D>j--
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o <10><><EFBFBD>yq<79>gq<67><71>`{<7B>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>u<EFBFBD><75>}<7D><><EFBFBD><EFBFBD>sp<73><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Srn<72>oFsxUTl `<60><>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D><>y<7F>*
<06><>r<EFBFBD><72>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><>{t<74><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fx<66>\<5C>vnigzpy/
<EFBFBD><EFBFBD>|<7C><>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F>ɐ
<0F>z<EFBFBD>vr<76><72><EFBFBD><EFBFBD>b<EFBFBD><62>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><77><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>{tm<74><6D><EFBFBD><EFBFBD>{|F_׳<5F><D7B3><EFBFBD>Ƣ<EFBFBD><C6A2><EFBFBD><EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><>v<EFBFBD><76><EFBFBD>sh<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>h<EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD>s<EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>n#j<><6A>Ý<EFBFBD><C39D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F>wt~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><13>l<EFBFBD>s_<73>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SQ{X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD>iddvz<76><7A><EFBFBD><EFBFBD>a fοw<CEBF><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+ <0F>r<EFBFBD><72>nxo<78><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^knzm<7A>}u97
aւF{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>jD <0C><>\20Bo<42><6F><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nh_o81<38><31>Lo}<7D><><EFBFBD>y<EFBFBD>m<EFBFBD><6D><EFBFBD>zkYO].Ej<45>`<60><
<1D>M)2-#31$FI8%$/ )%!<21><><&X<>'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rcl<63><6C>gzOO(5;lp5bq<62><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D>tbon=Yd<59>i

# <07><>  

 
 
  ypP<70><50><EFBFBD><EFBFBD>dO<64><4F><EFBFBD>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>Q"<GV$CSS1aba<62>')(hepU^<5E>KRh<52> L/5/  
 
  >2[fg}D$<24><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e[," ! (   z<>|<7C>vA)%
- ) 7,)
2?&21("<12>Xt<58>c^T[>b`8

"  :\u_u<5F><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q; <12>\'$%!$;2 -k+#!3<33>~NMhjTUk<55>F8Nfpyx<79><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vd^o~#!YZy<5A><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`<60>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>p]hz{qim<69>{<7B>xmP|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƙ<EFBFBD><C699><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1L|<7C><>nQ="%C<><43>f<EFBFBD><66><EFBFBD><EFBFBD><EFBFBD>wi<77><69><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD>Ǭ<EFBFBD><C7AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF>wx<77><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>2?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><74>Ü<EFBFBD><C39C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}j<><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>x<EFBFBD><78>w=k<>|Y<><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HXy<58><79><EFBFBD>͹<EFBFBD><CDB9><EFBFBD><EFBFBD>vju<6A><75><EFBFBD>g<EFBFBD>~qln<6C><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NU<4E><55><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD>mdq<64><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lw<6C><77>gzU<7A>~<7E>$<12><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʩ<EFBFBD><CAA9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!F<><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cx<63>vOovq<76><71><EFBFBD>z<EFBFBD><7A>od_Udk<64>q<EFBFBD>pt<70>a<EFBFBD><61><EFBFBD><EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD>d
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD>ǫ<EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>yw<79><77>ml<6D><6C><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>yT1<><31>ɍ<EFBFBD><C98D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ƣ
<EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>gi<EFBFBD>zr<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD><EFBFBD><EFBFBD>x|<7C><><EFBFBD>+O#x<><78><EFBFBD>԰<EFBFBD><D4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>ѭ<EFBFBD>ɣ˴<C9A3><CBB4>ŭ<EFBFBD><C5AD>ٹ<EFBFBD><D9B9><EFBFBD><EFBFBD><E1BABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
`<60>œ<EFBFBD><C29C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĝ<EFBFBD>{x<>[h<><68><EFBFBD><EFBFBD><EFBFBD>˔<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD>s<EFBFBD><73> ;<3B>Ǽʺ<C7BC><CABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|.
<1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~s<>x<EFBFBD>z<EFBFBD>w<EFBFBD><77>|<7C><><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>! # <09>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>u<EFBFBD>Z<08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f_x<5F><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D>s<EFBFBD>|<7C><>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F>s<19><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m~`<60><><EFBFBD>i_<69><5F>M<13>˥<EFBFBD><CBA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{l<><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E>z{<7B><>qv<71><76><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70>xu<><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}{ǝ<><C79D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w_}<7D>c~S<><53>
B<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0E><><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>qq<71><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<73><7F><EFBFBD><EFBFBD>qv<71>^<5E><>U)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rh<72><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<7F><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD>' <09><><EFBFBD>wߧ{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>h<EFBFBD>}[o~<7E><>Zu<38><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<7F><67><EFBFBD>Sy<53><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+ <13><><EFBFBD>Q<EFBFBD><51>u<EFBFBD><75>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E><>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><05><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>yi<79><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>oz<6F><7A>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>Cp<><70>w<EFBFBD>p<EFBFBD><70><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B><><EFBFBD>td<7F>}y<7F>u!<21>ӭ<EFBFBD><D3AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D><>upq<70><71>w<EFBFBD><77><EFBFBD><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<74><07><>঳g<E0A6B3><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p{{<7B><>y<EFBFBD><79>C<04><>Ϯ<EFBFBD><CFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B><>d<EFBFBD><64>~o<>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79>
<07><><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>X^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>vtA<74><EFBFBD>F<EFBFBD>E <09>¬<EFBFBD><C2AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD><EFBFBD>zw<7A><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>s<1A><>ӣqjxkg<6B>[<5B><>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pR~<7E>[<5B><><EFBFBD><0F>ܠ<EFBFBD>nlw<6C><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E>v<EFBFBD>q<EFBFBD><71>m<EFBFBD><6D><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<15><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD>z<EFBFBD><7A>x<EFBFBD><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>qq<71>r<EFBFBD><72><EFBFBD> <05>전[kr<6B>vq<76><71><EFBFBD><EFBFBD>x~<7F><7F>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69>w<EFBFBD>x<EFBFBD><78>y<EFBFBD><79>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>p <09><>·xyXun<75><6E><EFBFBD>rh~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72>{<7B><>\iK<69>dIR<49>]<18>ʗen<65>s<EFBFBD><73><EFBFBD><EFBFBD>k`<60><><EFBFBD><EFBFBD>x<EFBFBD><78>c|<7C><><EFBFBD><EFBFBD><EFBFBD>W|<7C><><EFBFBD><7F><EFBFBD>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD>x|hJD*<0F><><EFBFBD><EFBFBD>h}c<>}<7D>}l<><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rZ<72><5A>\o<>xoLkvp<76>h\
<05><>t<EFBFBD>x<EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{~<7E>y<EFBFBD><79><EFBFBD>~u<><75><EFBFBD><EFBFBD>O!<06><>ťkm^iT<69><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD>[<5B><>u^<5E>D{U<>YjQ<06><>`~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~Kv<76><7F><EFBFBD><EFBFBD>ç<EFBFBD><C3A7>y<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"i<7F><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>aQ<61>Yyk|jpr<70>x0W:
<1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD>}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>y<EFBFBD><79><EFBFBD><EFBFBD>e|V<><56><EFBFBD><EFBFBD>}z<><7A>ȹ<EFBFBD><C8B9><EFBFBD><EFBFBD><EFBFBD><7F>eFwR$BSpf<70>Y3@Bu!': <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B><><EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53>gjc<6A><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f2  :<3A><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rr<T1<17><>glJY}'3 =<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R[<><7F><EFBFBD>EOerSL<CY^dx<64><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cq <15><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E>JasbgLj<4C><6A><EFBFBD><EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>ʒ](+~p<><70>_6%#/ <1C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TQ'Z<>nj=<^<5E>s-.Hryss<73><73><EFBFBD><EFBFBD>|<7C><>J3%iua<75><61><EFBFBD>E 






}<7D><><EFBFBD>/ LbMV=C;VJBY7*03GWd<><64>Zp<5A><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RI7>#

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,16 @@
papers = [
'bricks.pgm',
'bricks2.pgm',
'burlap.pgm',
'canvas2.pgm',
'defaultpaper.pgm',
'marble.pgm',
'marble2.pgm',
'stone.pgm',
'struc.pgm',
]
install_data(
papers,
install_dir: pikadatadir / 'pikaressionist' / 'Paper',
)

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1,43 @@
Preset
desc=Simulates the Apply Canvas plugin, by just adding a paper relief to the image.
orientnum=1
orientfirst=0.000000
orientlast=0.000000
orienttype=0
sizenum=1
sizefirst=0.000000
sizelast=0.000000
sizetype=0
brushrelief=12.000000
brushdensity=1.000000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=1
generaldarkedge=0.000000
generalpaintedges=0
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
generalshadowdepth=10
generalshadowblur=4
devthresh=0.100000
paperrelief=25.0
paperscale=100.0
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/defaultbrush.pgm
selectedpaper=Paper/struc.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,50.000000,1.000000
sizestrexp=1.000000
sizevoronoi=0
colortype=0
colornoise=0.000000

View File

@ -0,0 +1,40 @@
Preset
desc=Huge spheres! Tileable. Might be suitable as a background somewhere.
orientnum=1
orientfirst=0.000000
orientlast=60.000000
orienttype=0
sizenum=6
sizefirst=28.670000
sizelast=50.439999
sizetype=2
brushrelief=100.000000
brushdensity=7.070000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.020000
generalpaintedges=1
generaltileable=1
generaldropshadow=1
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/sphere.ppm
selectedpaper=Paper/defaultpaper.pgm
color=ffffff
placetype=0
placecenter=1
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,28 @@
Preset
orientnum=1
orientfirst=0.000000
orientlast=360.000000
orienttype=2
brushrelief=12.000000
brushscale=15.930000
brushdensity=7.940000
brushgamma=1.310000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/weave.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=1
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,28 @@
Preset
orientnum=4
orientfirst=44.599998
orientlast=360.000000
orienttype=2
brushrelief=0.000000
brushscale=10.630000
brushdensity=21.000000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.000000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=100.570000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/chalk01.pgm
selectedpaper=Paper/canvas2.pgm
color=010101
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Simulates a cubistic painting.
orientnum=30
orientfirst=0.000000
orientlast=360.000000
orienttype=2
sizenum=1
sizefirst=17.080000
sizelast=17.080000
sizetype=0
brushrelief=0.000000
brushdensity=18.600000
brushgamma=0.500000
brushaspect=0.000000
generalbgtype=1
generaldarkedge=0.000000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=100.570000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/grad01.pgm
selectedpaper=Paper/canvas2.pgm
color=646566
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Turns the image into a layer of small pebbles.
orientnum=1
orientfirst=47.790001
orientlast=0.000000
orienttype=0
sizenum=1
sizefirst=5.000000
sizelast=5.000000
sizetype=0
brushrelief=0.000000
brushdensity=20.000000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.300000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/shape02.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,28 @@
Preset
orientnum=4
orientfirst=44.599998
orientlast=360.000000
orienttype=2
brushrelief=0.000000
brushscale=10.750000
brushdensity=11.040000
brushgamma=0.500000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.000000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=100.570000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/fabric02.pgm
selectedpaper=Paper/canvas2.pgm
color=010101
placetype=1
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,28 @@
Preset
orientnum=10
orientfirst=38.230000
orientlast=360.000000
orienttype=6
brushrelief=12.000000
brushscale=20.000000
brushdensity=50.000000
brushgamma=2.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.300000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/dribble.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,28 @@
Preset
orientnum=14
orientfirst=66.900002
orientlast=360.000000
orienttype=6
brushrelief=0.000000
brushscale=13.730000
brushdensity=20.000000
brushgamma=1.000000
brushaspect=-0.450000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/shape04.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Flower power, man!
orientnum=7
orientfirst=11.489998
orientlast=45.599998
orienttype=2
sizenum=1
sizefirst=15.930000
sizelast=15.930000
sizetype=0
brushrelief=12.390000
brushdensity=21.709999
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=1
generaldarkedge=0.150000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=100.570000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/flower01.pgm
selectedpaper=Paper/canvas2.pgm
color=646566
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Woof!
orientnum=30
orientfirst=89.199997
orientlast=203.889999
orienttype=4
sizenum=1
sizefirst=14.200000
sizelast=14.200000
sizetype=0
brushrelief=0.000000
brushdensity=28.320000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=103.169998
paperinvert=1
paperoverlay=0
selectedbrush=Brushes/chalk01.pgm
selectedpaper=Paper/marble.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,28 @@
Preset
orientnum=15
orientfirst=44.599998
orientlast=180.220001
orienttype=6
brushrelief=12.000000
brushscale=14.200000
brushdensity=20.000000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/chalk01.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=1
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,28 @@
Preset
orientnum=15
orientfirst=31.860001
orientlast=180.220001
orienttype=6
brushrelief=41.590000
brushscale=15.350000
brushdensity=26.580000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/chalk01.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=1
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Sends a horde of maggots to gnaw at your image.
orientnum=30
orientfirst=0.000000
orientlast=360.000000
orienttype=6
sizenum=1
sizefirst=13.150000
sizelast=13.150000
sizetype=0
brushrelief=16.000000
brushdensity=20.000000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=0
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/worm.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=1
numorientvector=1
orientvector=0,0.633333,0.466667,282.000000,-0.978148,0.207912,1.000000,-1603454457
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,39 @@
Preset
desc=Quite close to the original Cryptiq-plugins effect.
orientnum=1
orientfirst=0.000000
orientlast=0.000000
orienttype=0
sizenum=10
sizefirst=6.000000
sizelast=25.000000
sizetype=6
brushrelief=100.000000
brushdensity=50.000000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=3.500000
devthresh=0.100000
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/ball.ppm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Very rough moss-like texture. Works quite well for tileable backgrounds and other textures.
orientnum=21
orientfirst=31.860001
orientlast=180.220001
orienttype=6
sizenum=1
sizefirst=30.570000
sizelast=30.570000
sizetype=0
brushrelief=41.590000
brushdensity=26.580000
brushgamma=0.500000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/strange01.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Rough paint-on-rock sort of texture. Good for tileable backgrounds.
orientnum=30
orientfirst=0.000000
orientlast=360.000000
orienttype=2
sizenum=1
sizefirst=35.369999
sizelast=35.369999
sizetype=0
brushrelief=100.000000
brushdensity=20.000000
brushgamma=2.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/splat3.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,30 @@
Preset
orientnum=4
orientfirst=31.860001
orientlast=360.000000
orienttype=7
brushrelief=12.000000
brushscale=20.000000
brushdensity=20.000000
brushgamma=1.000000
brushaspect=0.630000
generalbgtype=0
generaldarkedge=0.400000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/crayon04.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=3
orientvector=0,0.240000,0.333333,0.000000,0.000000,1.000000,1.000000,3
orientvector=1,0.780000,0.293333,0.000000,0.000000,1.000000,1.000000,3
orientvector=2,0.533333,0.813333,0.000000,0.000000,1.000000,1.000000,3
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=1

View File

@ -0,0 +1,28 @@
Preset
orientnum=8
orientfirst=22.299999
orientlast=360.000000
orienttype=2
brushrelief=15.040000
brushscale=13.630000
brushdensity=15.500000
brushgamma=0.860000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=0
generaltileable=0
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/spunge02.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=1
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,28 @@
Preset
orientnum=1
orientfirst=0.000000
orientlast=0.000000
orienttype=2
brushrelief=0.000000
brushscale=11.330000
brushdensity=12.390000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.000000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=100.570000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/shape03.pgm
selectedpaper=Paper/canvas2.pgm
color=646566
placetype=1
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Plain oil-painting. Good for big pictures, as much of the details are lost.
orientnum=30
orientfirst=70.089996
orientlast=360.000000
orienttype=5
sizenum=1
sizefirst=15.350000
sizelast=15.350000
sizetype=0
brushrelief=12.000000
brushdensity=40.000000
brushgamma=1.310000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.050000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/defaultbrush.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Looks like a mixture between a spiderweb and a smashed window.
orientnum=17
orientfirst=15.930000
orientlast=360.000000
orienttype=3
sizenum=1
sizefirst=25.780001
sizelast=25.780001
sizetype=0
brushrelief=0.000000
brushdensity=20.950001
brushgamma=0.500000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.100000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/strange01.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,41 @@
Preset
desc=The image looks like it is made up of small pieces of straw or chips of wood. Tileable.
orientnum=30
orientfirst=41.419998
orientlast=360.000000
orienttype=6
sizenum=1
sizefirst=29.730000
sizelast=29.730000
sizetype=0
brushrelief=0.000000
brushdensity=32.650002
brushgamma=1.000000
brushaspect=-0.400000
generalbgtype=0
generaldarkedge=0.350000
generalpaintedges=1
generaltileable=1
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/defaultbrush.pgm
selectedpaper=Paper/defaultpaper.pgm
color=000000
placetype=0
placecenter=0
numorientvector=2
orientvector=0,0.500000,0.500000,90.000000,1.000000,0.000000,1.000000,3
orientvector=1,0.500000,0.500000,270.000000,-1.000000,0.000000,1.000000,3
orientangoff=0.000000
orientstrexp=1.400000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,40 @@
Preset
desc=Makes the image look like some sort of woven quilt or rug, or something in that direction.
orientnum=4
orientfirst=9.560000
orientlast=360.000000
orienttype=2
sizenum=1
sizefirst=20.530001
sizelast=20.530001
sizetype=0
brushrelief=12.000000
brushdensity=13.080000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=1
generaldarkedge=0.050000
generalpaintedges=1
generaltileable=0
generaldropshadow=0
generalshadowdarkness=20.000000
devthresh=0.100000
paperrelief=30.969999
paperscale=100.570000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/fabric01.pgm
selectedpaper=Paper/canvas2.pgm
color=646566
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0
numsizevector=1
sizevector=0,0.500000,0.500000,0.000000,0.000000,0
sizeangoff=0.000000
sizestrexp=0.000000
sizevoronoi=0

View File

@ -0,0 +1,28 @@
Preset
orientnum=16
orientfirst=0.000000
orientlast=360.000000
orienttype=2
brushrelief=30.969999
brushscale=20.000000
brushdensity=25.160000
brushgamma=1.000000
brushaspect=0.000000
generalbgtype=0
generaldarkedge=0.050000
generalpaintedges=1
generaltileable=0
paperrelief=0.000000
paperscale=30.000000
paperinvert=0
paperoverlay=0
selectedbrush=Brushes/wavy.pgm
selectedpaper=Paper/defaultpaper.pgm
color=010101
placetype=0
placecenter=0
numorientvector=1
orientvector=0,0.500000,0.500000,0.000000,0.000000,1.000000,1.000000,0
orientangoff=0.000000
orientstrexp=1.000000
orientvoronoi=0

View File

@ -0,0 +1,32 @@
presets = [
'ApplyCanvas',
'Ballpark',
'Canvas',
'Crosshatch',
'Cubism',
'Dotify',
'Embroidery',
'Feathers',
'Felt-marker',
'Flowerbed',
'Furry',
'Line-art-2',
'Line-art',
'Maggot-invasion',
'MarbleMadness',
'Mossy',
'Painted_Rock',
'Parquette',
'Patchwork',
'Ringworks',
'Sample',
'Smash',
'Straws',
'Weave',
'Wormcan',
]
install_data(
presets,
install_dir: pikadatadir / 'pikaressionist' / 'Presets',
)

View File

@ -0,0 +1,102 @@
This is the README for The PIKAressionist
(c) 1998, 1999 Vidar Madsen - vidar@prosalg.no
The PIKAressionist is free software, and may be distributed
freely, provided this file is included!
This program comes with no warranty, whatsoever. The author
can not be held liable for any damage caused by proper or
improper use of this program.
--- Introduction
The PIKAressionist is a plug-in for the Photo and Image Kooker Application,
a.k.a. PIKA. It can be used to create natural looking painting effects
and similar. It can also be run in a primitive "standalone" mode.
The current version is still a bit shaky, and is to be considered beta
software. I'll do some serious testing, hopefully across a few more
platforms, as soon as I can.
The official Web-page is http://www.prosalg.no/~vidar/pikaressionist/ and
will always contain a link to the latest released version.
--- Compiling / Installing
To compile (hopefully):
make
If you want to compile for GTK-1.1 and PIKA-1.1 instead, you will have
to change the two variable at the top of Makefile. Possibly you would
want to edit DEFAULTPATH as well, but that's not critical.
To install plug-in and accompanying files:
make install
The plug-in installs itself under $HOME/.pika/plug-ins/ and copies a
couple of files into the directory $HOME/.pika/pikaressionist/. The
subdirectories 'Brushes', 'Paper' and 'Presets' will be created during
"make install", and a few files will be added; As a minimum,
'defaultbrush.pgm' and 'defaultpaper.pgm' under their respective
directories. These are vanilla .PGM files, which could be edited (and
created) with any decent program - like PIKA! :-)
--- Standalone
As of version 0.99 and later, the PIKAressionist can also be run
separately from PIKA. This is primarily intended for debugging
purposes, though, as it still needs PIKA libraries to compile. In your
shell, type:
pikaressionist somefile.ppm
The image specified must be a valid PPM file. No other formats are
supported, and probably never will.
If you click "OK", the PPM will be replaced with the "repainted" version.
If you "Cancel", nothing will be done to the file.
--- File Formats
The "normal" brushes are simply grayscale PGM files, which can be created
with almost any program, including xv and of course PIKA. A number of
brushes is included, so I guess a more in-depth explanation is not
necessary. And, for those who might want to try it, PIKAressionist can
also read GBR files, which is PIKA's native brush format. (You still
need to copy them to the PIKAressionist's brush-directory, though. This
will probably be fixed sometimes.)
Version 0.99.4 introduced the concept of using "colored" brushes (although
"pre-rendered" usually is more correct). The brushes' file format is a
plain PPM file, but the layout is somewhat special (and kinda hard to
explain);
- The Red channel contains a shading map of the brush in question. Often
it resembles the overall image more or less completely.
- The Green channel contains a high-light map. This is a pre-defined
image of the shiny parts of the brush. (Ordinary grayscale brushes
have this calculated automatically with a rough emboss-ish algorithm.)
- The Blue channel functions as a brush mask. When applying a brush
stroke to the image, all areas colored blue in the file are first
"blacked out" of the image.
--- Feedback
If you have any comments, criticism, ideas for improvement or new
features, or if you run into problems of any sort, let me know, so that I
can (try to) fix it for the next release! (And, if you find platform-
dependent bugs, please try to fix them and send me a patch!)
I'm also welcoming contributions in the form of brushes or textures! For
this program to be valuable, it needs them... Bad! All contributions will
be properly credited, of course.
Good luck and happy painting!
Vidar Madsen <vidar@prosalg.no>

View File

@ -0,0 +1,653 @@
/* PIKA - Photo and Image Kooker Application
* a rebranding of The GNU Image Manipulation Program (created with heckimp)
* A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio
*
* Original copyright, applying to most contents (license remains unchanged):
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <string.h>
#include <libpika/pika.h>
#include <libpika/pikaui.h>
#include <libpikamath/pikamath.h>
#include "pikaressionist.h"
#include "ppmtool.h"
#include "brush.h"
#include "presets.h"
#include <libpika/stdplugins-intl.h>
static void update_brush_preview (const char *fn);
static GtkWidget *brush_preview = NULL;
static GtkListStore *brush_list_store = NULL;
static GtkWidget *brush_list = NULL;
static GtkWidget *brush_relief_scale = NULL;
static GtkWidget *brush_aspect_scale = NULL;
static GtkAdjustment *brush_gamma_adjust = NULL;
static gboolean brush_dont_update = FALSE;
static gchar *last_selected_brush = NULL;
static gint brush_from_file = 2;
static ppm_t brushppm = {0, 0, NULL};
void
brush_restore (void)
{
reselect (brush_list, pcvals.selected_brush);
gtk_adjustment_set_value (brush_gamma_adjust, pcvals.brushgamma);
pika_label_spin_set_value (PIKA_LABEL_SPIN (brush_relief_scale), pcvals.brush_relief);
pika_label_spin_set_value (PIKA_LABEL_SPIN (brush_aspect_scale), pcvals.brush_aspect);
}
void
brush_store (void)
{
pcvals.brushgamma = gtk_adjustment_get_value (brush_gamma_adjust);
}
void
brush_free (void)
{
g_free (last_selected_brush);
}
void brush_get_selected (ppm_t *p)
{
if (brush_from_file)
brush_reload (pcvals.selected_brush, p);
else
ppm_copy (&brushppm, p);
}
static gboolean
file_is_color (const char *fn)
{
return fn && strstr (fn, ".ppm");
}
void
set_colorbrushes (const gchar *fn)
{
pcvals.color_brushes = file_is_color (fn);
}
static const Babl *
get_u8_format (PikaDrawable *drawable)
{
if (pika_drawable_is_rgb (drawable))
{
if (pika_drawable_has_alpha (drawable))
return babl_format ("R'G'B'A u8");
else
return babl_format ("R'G'B' u8");
}
else
{
if (pika_drawable_has_alpha (drawable))
return babl_format ("Y'A u8");
else
return babl_format ("Y' u8");
}
}
static void
brushdmenuselect (GtkWidget *widget,
gpointer data)
{
GeglBuffer *src_buffer;
const Babl *format;
guchar *src_row;
guchar *src;
gint bpp;
gint x, y;
ppm_t *p;
gint x1, y1, w, h;
gint row;
gint32 drawable_id = -1;
PikaDrawable *drawable;
gint rowstride;
pika_int_combo_box_get_active (PIKA_INT_COMBO_BOX (widget), &drawable_id);
drawable = pika_drawable_get_by_id (drawable_id);
if (! drawable)
return;
if (brush_from_file == 2)
return; /* Not finished GUI-building yet */
if (brush_from_file)
{
#if 0
unselectall (brush_list);
#endif
preset_save_button_set_sensitive (FALSE);
}
gtk_adjustment_set_value (brush_gamma_adjust, 1.0);
pika_label_spin_set_value (PIKA_LABEL_SPIN (brush_aspect_scale), 0.0);
if (! pika_drawable_mask_intersect (drawable, &x1, &y1, &w, &h))
return;
format = get_u8_format (drawable);
bpp = babl_format_get_bytes_per_pixel (format);
ppm_kill (&brushppm);
ppm_new (&brushppm, w, h);
p = &brushppm;
rowstride = p->width * 3;
src_row = g_new (guchar, w * bpp);
src_buffer = pika_drawable_get_buffer (drawable);
if (bpp == 3)
{ /* RGB */
gint bpr = w * 3;
gint y2 = y1 + h;
for (row = 0, y = y1; y < y2; row++, y++)
{
gegl_buffer_get (src_buffer, GEGL_RECTANGLE (x1, y, w, 1), 1.0,
format, src_row,
GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
memcpy (p->col + row*rowstride, src_row, bpr);
}
}
else
{ /* RGBA (bpp > 3) GrayA (bpp == 2) or Gray */
gboolean is_gray = ((bpp > 3) ? TRUE : FALSE);
gint y2 = y1 + h;
for (row = 0, y = y1; y < y2; row++, y++)
{
guchar *tmprow = p->col + row * rowstride;
guchar *tmprow_ptr;
gint x2 = x1 + w;
gegl_buffer_get (src_buffer, GEGL_RECTANGLE (x1, y, w, 1), 1.0,
format, src_row,
GEGL_AUTO_ROWSTRIDE, GEGL_ABYSS_NONE);
src = src_row;
tmprow_ptr = tmprow;
/* Possible micro-optimization here:
* src_end = src + src_rgn.bpp * w);
* for ( ; src < src_end ; src += src_rgn.bpp)
*/
for (x = x1; x < x2; x++)
{
*(tmprow_ptr++) = src[0];
*(tmprow_ptr++) = src[is_gray ? 1 : 0];
*(tmprow_ptr++) = src[is_gray ? 2 : 0];
src += bpp;
}
}
}
g_object_unref (src_buffer);
g_free (src_row);
if (bpp >= 3)
pcvals.color_brushes = 1;
else
pcvals.color_brushes = 0;
brush_from_file = 0;
update_brush_preview (NULL);
}
static void
brushlistrefresh (void)
{
gtk_list_store_clear (brush_list_store);
readdirintolist ("Brushes", brush_list, NULL);
}
static void
savebrush_response (GtkWidget *dialog,
gint response_id,
gpointer data)
{
if (response_id == GTK_RESPONSE_OK)
{
gchar *name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
ppm_save (&brushppm, name);
brushlistrefresh ();
g_free (name);
}
gtk_widget_destroy (dialog);
}
static void
savebrush (GtkWidget *wg,
gpointer data)
{
GtkWidget *dialog = NULL;
GList *thispath = parsepath ();
gchar *path;
if (! PPM_IS_INITED (&brushppm))
{
g_message ( _("Can only save drawables!"));
return;
}
dialog =
gtk_file_chooser_dialog_new (_("Save Brush"),
GTK_WINDOW (gtk_widget_get_toplevel (wg)),
GTK_FILE_CHOOSER_ACTION_SAVE,
_("_Cancel"), GTK_RESPONSE_CANCEL,
_("_Save"), GTK_RESPONSE_OK,
NULL);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
pika_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
GTK_RESPONSE_OK,
GTK_RESPONSE_CANCEL,
-1);
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog),
TRUE);
path = g_build_filename ((gchar *)thispath->data, "Brushes", NULL);
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), path);
g_free (path);
g_signal_connect (dialog, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&dialog);
g_signal_connect (dialog, "response",
G_CALLBACK (savebrush_response),
NULL);
gtk_widget_show (dialog);
}
static gboolean
validdrawable (PikaImage *image,
PikaItem *item,
gpointer data)
{
return (pika_drawable_is_rgb (PIKA_DRAWABLE (item)) ||
pika_drawable_is_gray (PIKA_DRAWABLE (item)));
}
/*
* This function caches the last result. Call it with fn as NULL, to
* free the arguments.
* */
void
brush_reload (const gchar *fn,
ppm_t *p)
{
static char lastfn[256] = "";
static ppm_t cache = {0, 0, NULL};
if (fn == NULL)
{
ppm_kill (&cache);
lastfn[0] = '\0';
return;
}
if (strcmp (fn, lastfn))
{
g_strlcpy (lastfn, fn, sizeof (lastfn));
ppm_kill (&cache);
ppm_load (fn, &cache);
}
ppm_copy (&cache, p);
set_colorbrushes (fn);
}
static void
padbrush (ppm_t *p,
gint width,
gint height)
{
guchar black[3] = {0, 0, 0};
int left = (width - p->width) / 2;
int right = (width - p->width) - left;
int top = (height - p->height) / 2;
int bottom = (height - p->height) - top;
ppm_pad (p, left, right, top, bottom, black);
}
static void
update_brush_preview (const gchar *fn)
{
gint i, j;
guchar *preview_image;
if (fn)
brush_from_file = 1;
preview_image = g_new0 (guchar, 100*100);
if (!fn && brush_from_file)
{
/* preview_image is already initialized to our liking. */
}
else
{
double sc;
ppm_t p = {0, 0, NULL};
guchar gammatable[256];
int newheight;
if (brush_from_file)
brush_reload (fn, &p);
else if (PPM_IS_INITED (&brushppm))
ppm_copy (&brushppm, &p);
set_colorbrushes (fn);
sc = gtk_adjustment_get_value (brush_gamma_adjust);
if (sc != 1.0)
for (i = 0; i < 256; i++)
gammatable[i] = pow (i / 255.0, sc) * 255;
else
for (i = 0; i < 256; i++)
gammatable[i] = i;
newheight = p.height *
pow (10, pika_label_spin_get_value (PIKA_LABEL_SPIN (brush_aspect_scale)));
sc = p.width > newheight ? p.width : newheight;
sc = 100.0 / sc;
resize_fast (&p, p.width*sc,newheight*sc);
padbrush (&p, 100, 100);
for (i = 0; i < 100; i++)
{
int k = i * p.width * 3;
if (i < p.height)
for (j = 0; j < p.width; j++)
preview_image[i*100+j] = gammatable[p.col[k + j * 3]];
}
ppm_kill (&p);
}
pika_preview_area_draw (PIKA_PREVIEW_AREA (brush_preview),
0, 0, 100, 100,
PIKA_GRAY_IMAGE,
preview_image,
100);
g_free (preview_image);
}
/*
* "force" implies here to change the brush even if it was the same.
* It is used for the initialization of the preview.
* */
static void
brush_select (GtkTreeSelection *selection, gboolean force)
{
GtkTreeIter iter;
GtkTreeModel *model;
gchar *fname = NULL;
gchar *brush = NULL;
if (brush_dont_update)
goto cleanup;
if (brush_from_file == 0)
{
update_brush_preview (NULL);
goto cleanup;
}
if (gtk_tree_selection_get_selected (selection, &model, &iter))
{
gtk_tree_model_get (model, &iter, 0, &brush, -1);
/* Check if the same brush was selected twice, and if so
* break. Otherwise, the brush gamma and stuff would have been
* reset.
* */
if (last_selected_brush == NULL)
{
last_selected_brush = g_strdup (brush);
}
else
{
if (!strcmp (last_selected_brush, brush))
{
if (!force)
{
goto cleanup;
}
}
else
{
g_free (last_selected_brush);
last_selected_brush = g_strdup (brush);
}
}
brush_dont_update = TRUE;
gtk_adjustment_set_value (brush_gamma_adjust, 1.0);
pika_label_spin_set_value (PIKA_LABEL_SPIN (brush_aspect_scale), 0.0);
brush_dont_update = FALSE;
if (brush)
{
fname = g_build_filename ("Brushes", brush, NULL);
g_strlcpy (pcvals.selected_brush,
fname, sizeof (pcvals.selected_brush));
update_brush_preview (fname);
}
}
cleanup:
g_free (fname);
g_free (brush);
}
static void
brush_select_file (GtkTreeSelection *selection, gpointer data)
{
brush_from_file = 1;
preset_save_button_set_sensitive (TRUE);
brush_select (selection, FALSE);
}
static void
brush_preview_size_allocate (GtkWidget *preview)
{
GtkTreeSelection *selection;
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (brush_list));
brush_select (selection, TRUE);
}
static void
brush_aspect_adjust_cb (PikaLabelSpin *scale,
gdouble *value)
{
pikaressionist_scale_entry_update_double (scale, value);
update_brush_preview (pcvals.selected_brush);
}
void
create_brushpage (GtkNotebook *notebook)
{
GtkWidget *box1, *box2, *box3, *thispage;
GtkWidget *view;
GtkWidget *tmpw, *grid;
GtkWidget *frame;
GtkWidget *combo;
GtkWidget *label;
GtkSizeGroup *group;
GtkTreeSelection *selection;
label = gtk_label_new_with_mnemonic (_("_Brush"));
thispage = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
gtk_container_set_border_width (GTK_CONTAINER (thispage), 12);
gtk_widget_show (thispage);
box1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
gtk_box_pack_start (GTK_BOX (thispage), box1, TRUE,TRUE,0);
gtk_widget_show (box1);
view = create_one_column_list (box1, brush_select_file);
brush_list = view;
brush_list_store =
GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (view)));
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0);
gtk_widget_show (box2);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (box2), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
brush_preview = tmpw = pika_preview_area_new ();
gtk_widget_set_size_request (brush_preview, 100, 100);
gtk_container_add (GTK_CONTAINER (frame), tmpw);
gtk_widget_show (tmpw);
g_signal_connect (brush_preview, "size-allocate",
G_CALLBACK (brush_preview_size_allocate), NULL);
box3 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
gtk_box_pack_end (GTK_BOX (box2), box3, FALSE, FALSE,0);
gtk_widget_show (box3);
tmpw = gtk_label_new (_("Gamma:"));
gtk_label_set_xalign (GTK_LABEL (tmpw), 0.0);
gtk_box_pack_start (GTK_BOX (box3), tmpw, FALSE, FALSE,0);
gtk_widget_show (tmpw);
brush_gamma_adjust = gtk_adjustment_new (pcvals.brushgamma,
0.5, 3.0, 0.1, 0.1, 1.0);
tmpw = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, brush_gamma_adjust);
gtk_widget_set_size_request (GTK_WIDGET (tmpw), 100, 30);
gtk_scale_set_draw_value (GTK_SCALE (tmpw), FALSE);
gtk_scale_set_digits (GTK_SCALE (tmpw), 2);
gtk_box_pack_start (GTK_BOX (box3), tmpw, FALSE, FALSE, 0);
gtk_widget_show (tmpw);
g_signal_connect_swapped (brush_gamma_adjust, "value-changed",
G_CALLBACK (update_brush_preview),
pcvals.selected_brush);
pika_help_set_help_data
(tmpw, _("Changes the gamma (brightness) of the selected brush"), NULL);
box3 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start (GTK_BOX (thispage), box3, FALSE, FALSE,0);
gtk_widget_show (box3);
group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
tmpw = gtk_label_new (_("Select:"));
gtk_label_set_xalign (GTK_LABEL (tmpw), 0.0);
gtk_box_pack_start (GTK_BOX (box3), tmpw, FALSE, FALSE, 0);
gtk_widget_show (tmpw);
gtk_size_group_add_widget (group, tmpw);
g_object_unref (group);
combo = pika_drawable_combo_box_new (validdrawable, NULL, NULL);
pika_int_combo_box_connect (PIKA_INT_COMBO_BOX (combo), -1,
G_CALLBACK (brushdmenuselect),
NULL, NULL);
gtk_box_pack_start (GTK_BOX (box3), combo, TRUE, TRUE, 0);
gtk_widget_show (combo);
tmpw = gtk_button_new_with_mnemonic (_("Save _as"));
gtk_box_pack_start (GTK_BOX (box3),tmpw, FALSE, FALSE, 0);
g_signal_connect (tmpw, "clicked", G_CALLBACK (savebrush), NULL);
gtk_widget_show (tmpw);
grid = gtk_grid_new ();
gtk_grid_set_row_spacing (GTK_GRID (grid), 6);
gtk_grid_set_column_spacing (GTK_GRID (grid), 6);
gtk_box_pack_start (GTK_BOX (thispage), grid, FALSE, FALSE, 0);
gtk_widget_show (grid);
brush_aspect_scale =
pika_scale_entry_new (_("Aspect ratio:"), pcvals.brush_aspect, -1.0, 1.0, 2);
pika_help_set_help_data (brush_aspect_scale,
_("Specifies the aspect ratio of the brush"),
NULL);
gtk_size_group_add_widget (group,
pika_labeled_get_label (PIKA_LABELED (brush_aspect_scale)));
g_signal_connect (brush_aspect_scale, "value-changed",
G_CALLBACK (brush_aspect_adjust_cb),
&pcvals.brush_aspect);
gtk_grid_attach (GTK_GRID (grid), brush_aspect_scale, 0, 0, 3, 1);
gtk_widget_show (brush_aspect_scale);
brush_relief_scale =
pika_scale_entry_new (_("Relief:"), pcvals.brush_relief, 0.0, 100.0, 1);
pika_help_set_help_data (brush_relief_scale,
_("Specifies the amount of embossing to apply to the image (in percent)"),
NULL);
gtk_size_group_add_widget (group,
pika_labeled_get_label (PIKA_LABELED (brush_relief_scale)));
g_signal_connect (brush_relief_scale, "value-changed",
G_CALLBACK (pikaressionist_scale_entry_update_double),
&pcvals.brush_relief);
gtk_grid_attach (GTK_GRID (grid), brush_relief_scale, 0, 1, 3, 1);
gtk_widget_show (brush_relief_scale);
brush_select (selection, FALSE);
readdirintolist ("Brushes", view, pcvals.selected_brush);
/*
* This is so the "changed signal won't get sent to the brushes' list
* and reset the gamma and stuff.
* */
gtk_widget_grab_focus (brush_list);
gtk_notebook_append_page_menu (notebook, thispage, label, NULL);
}

View File

@ -0,0 +1,33 @@
/* PIKA - Photo and Image Kooker Application
* a rebranding of The GNU Image Manipulation Program (created with heckimp)
* A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio
*
* Original copyright, applying to most contents (license remains unchanged):
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef __BRUSH_H
#define __BRUSH_H
#include "ppmtool.h"
void brush_store(void);
void brush_restore(void);
void brush_free(void);
void create_brushpage(GtkNotebook *);
void brush_get_selected (ppm_t *p);
#endif /* #ifndef __BRUSH_H */

View File

@ -0,0 +1,105 @@
/* PIKA - Photo and Image Kooker Application
* a rebranding of The GNU Image Manipulation Program (created with heckimp)
* A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio
*
* Original copyright, applying to most contents (license remains unchanged):
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <gtk/gtk.h>
#include <libpika/pika.h>
#include <libpika/pikaui.h>
#include "pikaressionist.h"
#include "color.h"
#include "libpika/stdplugins-intl.h"
#define NUMCOLORRADIO 2
static GtkWidget *colorradio[NUMCOLORRADIO];
static GtkWidget *colornoiseadjust = NULL;
void
color_restore (void)
{
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (colorradio[pcvals.color_type]), TRUE);
pika_label_spin_set_value (PIKA_LABEL_SPIN (colornoiseadjust),
pcvals.color_noise);
}
int
color_type_input (int in)
{
return CLAMP_UP_TO (in, NUMCOLORRADIO);
}
void
create_colorpage (GtkNotebook *notebook)
{
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *frame;
label = gtk_label_new_with_mnemonic (_("Co_lor"));
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
gtk_widget_show (vbox);
frame = pika_int_radio_group_new (TRUE, _("Color"),
G_CALLBACK (pika_radio_button_update),
&pcvals.color_type, NULL, 0,
_("A_verage under brush"),
COLOR_TYPE_AVERAGE, &colorradio[COLOR_TYPE_AVERAGE],
_("C_enter of brush"),
COLOR_TYPE_CENTER, &colorradio[COLOR_TYPE_CENTER],
NULL);
pika_help_set_help_data
(colorradio[COLOR_TYPE_AVERAGE],
_("Color is computed from the average of all pixels under the brush"),
NULL);
pika_help_set_help_data
(colorradio[COLOR_TYPE_CENTER],
_("Samples the color from the pixel in the center of the brush"), NULL);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);
colornoiseadjust =
pika_scale_entry_new (_("Color _noise:"), pcvals.color_noise, 0.0, 100.0, 0);
pika_help_set_help_data (colornoiseadjust,
_("Adds random noise to the color"),
NULL);
g_signal_connect (colornoiseadjust, "value-changed",
G_CALLBACK (pikaressionist_scale_entry_update_double),
&pcvals.color_noise);
gtk_box_pack_start (GTK_BOX (vbox), colornoiseadjust, FALSE, FALSE, 6);
gtk_widget_show (colornoiseadjust);
color_restore ();
gtk_notebook_append_page_menu (notebook, vbox, label, NULL);
}

Some files were not shown because too many files have changed in this diff Show More