Initial checkin of Pika from heckimp
This commit is contained in:
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.
@@ -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頗浤Pgvkカァ椨劒矧屶|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}�・演姶膚。ョ爽_\UY]阻--
|
||||
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ク棗」afホソ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<T1glJY}'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伺�沂學tmqsekqycZ]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.
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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',
|
||||
)
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
@@ -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
Reference in New Issue
Block a user