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.
@@ -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.
+43
View File
@@ -0,0 +1,43 @@
P5
# CREATOR: The GIMP's PNM Filter Version 1.0
96 95
255
擧セテコ悴圦囹ョウ瀬注庶腹商�寫詞糾推��ぅ時懲。「ゥ浤「ゥ�擂┤惶ァエ攝注ー�「贈償・。ョア軸スツゥシラアッゥ「圏�揆ヲ國罨ーエ屏ヤュェ敘ヒュョルウ刋殱ッェ枢。足成乱幅抽ァ摎椋ャエナアェ、ァォーゥ淵ヲ覆~恫ヲ・オ鴎・。。ス攬ッィ慢氏・ーマヒウンラヘ{于亮キ。ッ・ト盲モ坡ウィイ圻キ惘ッ隼ア棠鱒麻徼h���j}�ゥ��u哀圸イュニトヘーソクモヒェャ峽惻キア漫・藻イュィ測Z厳悄擂「d奄ケ弓雷凋坏�」浚梵箔劼サ松略」ーャ。ァェ鎮サq頴S}ィfbaq絡ネ≦シS�ュミ゚フチ攘、}|]`ヲg♀執ーゥl朽n冠�lФi屮」#9ナ貧�叙pvニ・u、�込ツ」ー・�畠ス�刊屎�・Υ毎」「賜1脚湛�ャ�}嵩ア�Nロテ恤。sGX`-wzvrヲ初「窯_x�kpzuypG劉 ウサ順kェ~┣Z{イ擽、肌喧西ェ鴫、恆�斗割w梨拍瀦藍┐カ㎎鴻�筒ァィOネョ滑潔�тセ囓ナs註搗O_r�月蛙drm是� ウハ√宙㏍燥�。�坡ネック蕪圈坎~イ序鉱�l」ь「」給翼�zdr�政テ�"セ」|~}�訣uA|」寫ク}囑�&pc`Ywy葱c�yヲ キ寫��s侍囂t軌uュ肩ョヲァウ~z順�ュq粋「ウァお�┌註忸~[t�揣オ␍ ォケー挌鶏�'z妓アq凩Ε新wvjn]}ジ4}�「Wvメz€�%ャo櫨創糸ゥィゥー坤�爆悼gof�pvヲ�中白透y遵�ー歙モvツ柎m}fN+:±�g匝悖~mttlpS∩}膚ァ°Shキ怕梵笠竹o�蕨眺統椦ィォ漫≠栞q`l^ヤ泅。」ェヲ孱�|∫愕イWnホ&�3|sx�dg圀「ゥ�理悋x�wゥ噪怖yユ�€ -ョーbkl兔侭来w抖走ッヲ氣囈��ォ旬��v見葺ェ応巨初r頗浤Pgv kカァ椨劒矧屶|u椦○・�|zm�m塘潤悍桃"ッ釜、欠ァ循嬪□�弍「○チ腰~乱汢�€庸雌ャ棡茅梵「w}「是K^樺�T  `エ、掀傑キylか・瀦測建omj双弊歯急騒白ィク}tZ€叫p}◆ァ屓ш。相」ィイ嘸x刹№厨寫注。」」~怺刧�蓬FT=QIt_qPヤァヒウェゥ孜jオッ恕」�ッッ€「}}◆轄iy。Y}撓ァネ~汪雀oJd屎b�v耀イ翌楙吹巷q��槍�初生且ц�a^Pb��$kヨソ・ュ」ィ~帳恷ンァ悃ыヲマ㍼}樫瓦ア縁沾� トq嚶кvG`ゥ飼浙ー�供ーェだ恊S�ヲ螺~踊四�楷唐j《xb/�旨]-
uシェネ岫�且劵ァ摎ヲ�l�yn撈葬у檜寢」�ッあ[岬芯肱Ζ福pqm�・肇喇{ウx冬j}�・演姶膚。ョ爽_\U€Y]阻--
aレキイ、櫨支似ロ刋�随遵}≠�v飭ャ、擠。o ョ┐yq拡q恨`{厭�棟��揀s盃嘗}�園sp≒ェ」�援Srn塵FsxUTl `ヤヌテ。脂澄氣竃権。|�螺剥∑亜�}�y�*
莫r高w洛摯遠制剽辞�淹ス蒼培桾{t履嚏剥ヲ哨診x媾�nigzpy/ ␍iマ「ケ�脂g争ゥ狛島。摯怫箔筑、恍ィ�硲ノ�
忝牌r€€此bゥュ{ォッ撻€、賢糖恪詣�茎w凶駁湯縁死j砿tm梼造{|F_ラウ峺犯「眺孱w。ァ譜許イ�嚠z國�圈」棕「・這v€島sh炊棔キェz~€忠葡復�i栄築┌粒s孵裾丕」㊨額≦【弔恆n#jー療摯ゥ結侍�沸wt~檮穴酪沍�剞、ュエシ冤《_尿ц��y`搭梍�白ィ麻SQ{X��梏撓仲i€葛iddvzク棗」a fホソwチーゥ。摶ォ「且磨嵐分鋳峺撩「ゥョョォゥカァ�+ 腕�nxo藷ョ�枢�ャ堂ョヤ��]�€ヲ兆痩詠茅�щ竸knzmエ}u97
aヨ�{コΜッォ、ゥn煙ゥャ・。ォ怨苅�v妙央コ頬D 」ォ\20Bo送茶}聡蒼寇嚊nh_o81ンLo}z孜嗄楴ャzkYO].Ej輿�<
弄)2-#31$FI8%$/ )%!ォ�<&Xウ'€慢桁、rcl絃gzOO(5;lp5bq恊剴箸「ォ}奏bon=YdJ

# 緒  ␍␍   ␍  ␍  ypP顕送dO刋Cぜ」イР"<GV$CSS1aba�')(hepU^廳Rh� L/5/  ␍ ␍  >2[fg}D$枕€屁紙e[," ! (   z毫プA)%
- ) 7,)␍ 2?&21("�t議^T[>b`8␍
␍"  :\u_u€ヲコァ⊿€装q; €\'$%!$;2 -k+#!3掻NMhjTUk孝8Nfpyx�スソ。。サ棯∩計d^o~#!YZy≡椛賢`宜p麻術]hz{qimボ肺mP|�エィ�エ浤ーイァァク堡劭等辨オチカクエウセスイウウッ洵キ岷スィ」椪恙這忰1L|封nQ="%C€廓幕勗努i裏斡zゥ縛・侭轄崇箔桁」戎∩シ、ッ�垈・カ。騰筈ュニチ埀椣テマニコトヌャュコスュ。アネテオ奥クエォサヲ愡ェィ「似藷擽エア悗ョ。オ剄劒アュ「恣ヲ略。摧ー斡、ィ併ゥウア搶霜�湯Θ圉。ォー箆ウ・シコョ。ィァ宦促ッ涓」エサ総ケ」シタカィウヒソ�キwx勠ッイ丼ロ囑ェ。ウアョシイョ・ャヲ洶x�2?磁武。楸tウシテ恷ヰ棹ィァォイィ}j棣ィスキセ況コェ浣シスャォ算「x刹w=kイ|Y㍽。ェクーゥケャ遵Zウァ沾魂皐Xy€、ィヘケ賊惡vju自ョgミqln分タオソカ「擲ー惓シイカ、屎頼鉛�Uゥタィャ拷。�笈綜�mdq調エッー「ョェ洙�囃・噪東lw」㍑zU��$�昇エゥナ秤棠ウクヲェカ鴬ヲゥ」アェエ柝ュ匿ケアイシハゥュォ僑ゥ圖辞!F棆イ噪匡悁�x�Oovq衍�ヨod_Udk客}tB挨沚w〝括d
椛棣s」「」ャァェオセワキノトスァ€渠テトツタヒチミュハホフヌォマノコェ唱オツイア束クス嚮悍頗」惠媾董�県毎吹土w風ml翁蝕陪�ス��ュyT1飴ノ瑳沺墳ャオッタ・ネニサエッ�セタニトニチクセソヌシェオテメェィ「ャスッニ」␍悪ツク李、・ヶゥ∫オl�o父「球輩暖i循r島剣Q恬枢x|ウ艶+O#x辧スヤーーァスサシヘツキスムュタノ」ヒエタコナュハネルケソホモ蘯ス。溜愆賊�␍`ヲツ恃嘗ァ世ェ流掏寶調遂憧ト恙{x�[h鹿漉ーヒ抜u悖建s� ;愽シハコソセテムレニヌサゥニスケ攬属ー榁チチケ楷ャォイ攤洵。初摶�.␍愡ェ・。サゥヲェ涛汾ラ麿恫」汐ョ档~s」x�陣共|芦仂「y㍽ゥ�! # 遍キコアツヌナネタ擧離舉劬ゥ�瓦ォェ岻�ァェ梃乾牛・�x�兄�セチ」嫌横ャ圜汾糠_x供洳怺掵Tァ|逗q┨沛ァ肌ェ。「o紙s直ゥシオリニネィ唖�圷争�ュ「ア匚」据ョッ¢ヲ�「m~`数亙_�M€ヒ・物「、ゥ�尨♂畜l町�ー�配{剿qv葛腔・ャャッョ�p拒xuオゥ判、キz棊槙造京劭ヲ栲{ヌ撼。ェ棍ッ攪、瀦w_}議~S尸
Bムt對険「検浮�衷ヲ「Ρ。⊿噪甑搆i怙洒ィィイャ徘�クヲ�擶シ�ホェ�オァ沐qq恷。多嚀營寳奨ェァ敗則�qv疑治U)メタ�僑瓶h「�浤�昧劬}�鴇娼�k刋物腰。・フ}「ィ悽�' �」モw゚ァ{弊ヲィイ・沱ィ。悋叫尢ュ鎌劵ケェ據尨�急[o~狽Zu 8メオ李ゥッア、示ァ梺博告件、gエー�yゥ巻即囿ァイャイ�ァ握瀦+ 鳩ウQ齬u囓o・雷。」ャ帖椄ェォュシ摧。ア」�・刮~エ哥履塔��匆ョ棔㈹イ桾嚆ウーウ遥i潔剱於賓z∑~≧、ュ成ァ・{ェy屎動櫃pヲヒwユpが史嚏�。沽ウャア・ォ、ォ汢棊、楷��腎d厭yァu!ヨモュョ」キ勸チッ�}亨upqケ嗹㍽複c随ォヲがアィヲ・嫗枕擡・アt�ョヲ爬ウg至*・爆彫葎セッョ�ェ�「ュ櫨棗r惘「統p{{�y�C崢マョ・、ィエ蕗統椢梶{検d桃~o始ヲ像旺屏j「曙�yィッア楾y遂
イ��t街^羅寵│岬ウ・ャ。ゥィ�ャ福€揄�葬衍vtA�炉忍 ニツャァュ痩ィァ■錐rァ�額w�惠匠u・}キ「�」擧{クアゥュ栞壮捗モ」qjxkgЪ棔~圜立ゥャ恫ヲ綜穀�┐数捲」pR~梗��シワ�・nlw走п�~况�血m€ョ�z姦」痔將�庶�。逐兇昧∟Sゥオクッ>�h�ォ掏見x討タ・無毎�Υ沫y武鍵ヒq〉寥� ャ�Ъkr計q属衍x~瑞}�沸�ィi€陣」x・遥遂b苅掾� 淹ツキxyXun恙脚h~�泛洶嚼寐怏椥r崇{㍽\iK�dIR犠・ハ容n耀推оk`€ゥ椢x�c|忰�カW|カ�搆ェq次ェェ�|hJD*ェョャホh}c図凩l萩ヲ圷ヲ湊」ュ硲�詠Z鱒\o�oLkvp宿\
嶷tY桀供旺涛�槙沫荘ィヲiヲ」頃ク棘{~�ーュ嘸u乘ォ�!、エナ・km^iTヲ�譜岫ァィ圄ケア幕q�「」」�[符u^�D{UカYjQ誓`~傑髄又摧�狛・�Kv爾�テァャ准尽ッョ陪塩キ忰函"i豫寢獅�b仲・�w�セュェヲエカ・。ヱaQ炭yk|jpr警0W: ␍キカァ岬ェィ・рョ}芙姶}」。宕�寞r、緒痔ァォ噬忰ウ燈宙 (」yクェキオe|V�o}z続ネケッ豫�噪eFwR$BSpf�3@Bu!': キソ狛狂嵩桀尢毬擧「据�S€吉jc桃�央€、刎菅眠f2  :ネ�鵠県�ヲィ宸�ケウクソ払ア刻ェ�r<T1€€glJY}'3 =ソセ署。「「撻試R[京孔OerSL<CY^dx衍ュ速崇枕Cq �ェ擲「ァ~⑪asbgLj粉ェカZ恪�「ハ綻(+~p屶_6%#/ 脅中£悗乾TQ'Zハj=<^�-.Hryssm雛|气J3%iua竺� 


␍
␍
␍}ケ、テ/ LbMV=C;VJBY7*03GWd÷Zp」ヲ怙告RI7>#
␍*]「ーー答赫9
 '   ␍␍␍ Gスッ怐L$-J{尿}sRx@E側嘸')IPcbg{fN6Q^␍
 ␍b收イュス�「ァュ棔エ、似相棘X 
␍ ␍至�チナセネカ%  ␍"! 6 €?Eュw肩ャックスツセケ」楾ェタター尅腰ヲ頃・仏Л   6�。丶「寫牲ホーネケヌ菴ヒッナチァp ␍ jョュトシナナ�<.Qキヘコキシッッォ岶オ梹次・u召x�シッ圦ュ巣lmq~€灯ッェォ匣ケッェアカ弾RW」剳。n�「ミ梛汲�オ��剌権暇ンユラソヘチロワホ醉ーフスオクウセノヘチィヒュサネ彩ヲアネツカ�治スヌヌヒヌハ・o阿tヲ湊佚ィュ泪踏ナ�猿・、寳。汁RXk賜轟X. Qムコェョt炊9mィコノコシケス乙ソスー剄フイャョトチハテシテャヒュャツ「ナー、ュャクァ剏結x飼叙p[w翌ラェッア瑞x茎挙嚀。ェァ迫割''19榎B`>\Cgー横ヲvt舛%P脈モヘミ苜惓椥ッォ騰エコアヲッ惆エセソ�ーコェッテムテイィ像敷�~ь拷溶蓄k�m悍・「�O}⊥r⊥其擂|fQpYe着」ゥォ泝キ+、梭_YaO ;�ニチマサ。庁彫・庄昇クカィ埀ィサイュェキトオヲャオーウ柏弗航_�xr�奏`k€�駁ヲс|rw柧ts牌、ッ棘冕tq�辨エッ」抬ョ萩搗波壬(ュヤマチ�ヲ蔵オ蝶升、ッォ」麦ウェ・コトササオアスゥュ「」ゥェ、士ワ房l藷�u��ヲウ氤仲n㊥刧yp€悍f}}hP池p貯」�鱒居閲�}a�&
キチア棗泅擶ケー蜜ィネッ團ゥ惓オォシュマ族エアシ・キッオ復決嚠X{攪W3Ts剪。ィ「sf�汐�s∴雌「^_�^稚促カケ封�岬クヲュゥ€煙c␍Vエホ騰」悵ヲク�□ヲ「楷ク燈オオソ匸撩卅ァイキッ。乢�塘x撥拍xj^i�決�|掫陪rvf今伏漕wクJー、�卿}。棆、ゥョ椙搖。|f /ャト息ェ・尨欄白妙チ民・誌・ウィ墫ォィ惶ォ昇・ア棡字槽��nQx�煙€}gS€}tf�錐y徊岷曜E灸オ児似博~g注Йl
eキォ�割屆孱~ッ�楞ーチァケセオハゥキ。逢ャュ隼カェ�衍序恪枝釜~xrm臓p降^y此Uh孜Wy│�愀zy_e遅p�宮u�u}�國{Ct
�ー「r剽「�v」ィゥ失ェ�「奨賊、茜ェ丿ッ舉ォ床未枝倹絡w^iy茶a��推杭x�wuア。┛恬�[桎pコホ」巣dэt婚・殼f�箕ェ�ャ買枚€奥ヌォ�キ遂桝椙、ュォサ」像。ァォ辨」「怒隔箔寫進i刀vュ抑英z牟「幌「�乂ヲ鱒杭0vt劭惧�Z�洶。{Rz�雷シ�弛ュッ�」亊享祝擱。イ。ス×怫髄圜ヲ�鱒藍序q瑞d�f}€pq�f�・酔y都イdS株圄y六dT去擅�塔炎$恆�炊dックゥ駅N。・�沺ク圈栢ョrョオ桾イ擅尸ィ「ュョ摧柾|}�窮u{[]t�ィ�妖��毎刈�瓦ー「屐較2YΓ亂ー}水@屁イエ」涯氤 「�、~�∮弗№yc是軸蕪ャ尓梓桾囀ィ藤垂棯幌r|\漕�f]dd苧址ェmぃア嚮�抽崑梔ы「pVヮ」dセュ桝x血�水ー糖c棣ス嬖∩釜成匠槽」桶娘ュァゥツ恙腸」、劍ゥ洵ャ欲ee薯��gX処o�虚~禦ヲ環ィ捩」櫨ィ劼xtΖ給ャ益祷�、舶「ヌ�x�y追扶刊rウ稔{匕童イャォオ惆七エッカ・尨ッゥィ乢叔亜�ыp鰍pX|}бkxU畝ヲ�椌套t~字ィゥ寢tc€けャレュ┓酎ア嚴アュ�」揩3即冦悃這ウ・。惡ゥ・ュ頗「ォツゥゥ�イ洟。ョ。ァ沫ェ窒緒噎o㈱双apcpЬh凋�匆太▽�㍼沂lztァ勦卉檜ッ�ゥ匣、丗圉劈wY 址、�測棲・。喚スス「」ゥウョ琉鞄囓、ャ・昼動梟�詠y�ю益YzTm畠�€惓ケ埣z劼|罰�副窮紫稔ャ「€」oァ汳�。ィオオ�噬� )反梢書o卿ア「アヲ��ャ噪ェ苧桷岬ョ買ェ嘛vw{}[数~|刺z肱�倹ヲ|\丐アク顎割覆泄箸ーヒ・タイエ剽~。ナナア�ヲカ「エ。ーw`}ク。フr田聞ア民�uケ��」霜劇陶棊ィ處草�x|akj`y{vメ�私{|行}鰍&律官署ィュャョー�湊緒ョチ勣據・箱。イ雷造硫�)
 コ于頗「ォェ屐怛潮ァ白x蕪仲アォ焚ッヲゥィнa噫gMka]€az斯重jr・囀p搏「���「ー。茶万ィ風ィキー�闘ォョソ、イキスコィ縛�/・七サ��尚・ォ惡�剩タ寔lウ葎律ツエイ孰猿kty`qCqwt~糾≦o♂��vwm�ba嘗椈ュ{插ェ殕�ュ宦衰ウ劑イ洒シケ「即」ヲ (
タカョヤ匈次ャタ豫亟ウ答決岷ス「」ェキ槌メョサ倒竣|~|n~sbebirVs丘zeX瓜_ァヲ・v刪洛。謙宕i�ァ「」ォ卆「丿ォエア」泗档�#キョキレ|ィィッアタ擇蜜箕コ祷勣剩ャyテツ。~ゥRa【庶xnxуl€�ws♀zinPnun�、�x�水賭島~|璽。愕ー洌ュ・「ウォ囀ィ注�エィキマ旭エカィアェ勁ャ噛卿ェ嚠オ棍ォ、カツM伺�沂學tmq€sekqycZ€]wtw桁鼠lbビ~�かz��轟立、憤ゥ・�舶惶汕v兌5fャョイフヌレケケィァィ騒插恆坤這鴻「コャア�-H&$BYf^ig仁wlnuwqSr恵cg�tX図sg雛桴服框鞄�・ーウ「キ「・�m�ァ渇k∞oa_~楾メタホツ「ャャ剽thnk池恷「根ッ椁W)*hBKG"7((Y]x|xdwjt}ィ淀s}酢Z怨。┬�層�]シ。�ォ悽�⑤�ゞ{n遊9d� 芝ゥキサホゥテメカv醜b椒虫沺ック唆田@&,#GL€“<"#7Ab稽tecg�俣桍ks�l央}ォX套笠普。エ諸逗ij'!<エ狽pJ¥、|l$ Pッ到イ嘯�d�h�」荘イ�ィ。�!1)DD5LZ��_T(F#2Чbx∪f「ゥュqulo€~tVj弓C=5u袖ゥ反€サ~棍エ享�n、☆葡� {ケ相縛」ルXョ�張ャヲァ浹€2 !^ュ、{m霜''09_xa+.#B"_e塾t\@<**,"+!\{捲剌l寮遠コャ∞〕揩ャロ�ヌョqu?␍%+Nbre侮球vwС! #%*+␍*#)
2"␍) ␍ 
'.6bbivエ|詞a�Xqp◇цM
タシスュ�_M #%
␍ ␍#
('&SWb#  &    コヲャク囿ウクマ。 ␍ ␍&   !␍%
$4PKhc迎kロ~�I ␍␍ 
 ␍#$)きャカ抽・字、幻エ。Z'喚ウセ「o#S€焚・�8oDA$埔rェサョ涛A児エ棗、チィッィィュスクィ「�ィ亟柎 
', 7硲。ヲッマハソヘケエケトト椪V沛柱=Ewマメカイーサケヤ、スィ「ァニコシツァケリウキゥ・カャツシエテイェ・ャシシ估イユオイセスオシサテキリケヌハカツタヨセマセサツムマソャチッイースチ收サホチカヨッロ料ハモムュトハノオメヌナテ
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.
+16
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.
@@ -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
+40
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
+28
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
@@ -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
+40
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
+40
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
@@ -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
+28
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
@@ -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
+40
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
+40
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
+28
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
@@ -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
@@ -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
@@ -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
+40
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
@@ -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
+30
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
+28
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
+28
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
+40
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
+40
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
+41
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
+40
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
+28
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
@@ -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',
)
+102
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>
+653
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);
}
+33
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 */
+105
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