From 3549dea8464bc6419fd48cb687cb21bc7e5ff6af Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Sun, 2 Feb 2025 19:42:18 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20initial=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++ NFPixels-Regular.ttf | Bin 0 -> 31328 bytes README.md | 14 ++++++++ data.json | 67 +++++++++++++++++++++++++++++++++++++++ main.js | 51 +++++++++++++++++++++++++++++ package.json | 11 +++++++ sources/ace.gif | Bin 0 -> 219 bytes sources/agender.gif | Bin 0 -> 217 bytes sources/aromantic.gif | Bin 0 -> 238 bytes sources/bisexual.gif | Bin 0 -> 224 bytes sources/demiboy.gif | Bin 0 -> 243 bytes sources/demigirl.gif | Bin 0 -> 243 bytes sources/demiromantic.gif | Bin 0 -> 223 bytes sources/demisexual.gif | Bin 0 -> 223 bytes sources/gay.gif | Bin 0 -> 318 bytes sources/intersex-1.gif | Bin 0 -> 209 bytes sources/intersex-2.gif | Bin 0 -> 207 bytes sources/lesbian.gif | Bin 0 -> 318 bytes sources/nonbinary.gif | Bin 0 -> 253 bytes sources/pansexual.gif | Bin 0 -> 226 bytes sources/pride.gif | Bin 0 -> 433 bytes sources/trans.gif | Bin 0 -> 224 bytes 22 files changed, 146 insertions(+) create mode 100644 .gitignore create mode 100644 NFPixels-Regular.ttf create mode 100644 README.md create mode 100644 data.json create mode 100644 main.js create mode 100644 package.json create mode 100644 sources/ace.gif create mode 100644 sources/agender.gif create mode 100644 sources/aromantic.gif create mode 100644 sources/bisexual.gif create mode 100644 sources/demiboy.gif create mode 100644 sources/demigirl.gif create mode 100644 sources/demiromantic.gif create mode 100644 sources/demisexual.gif create mode 100644 sources/gay.gif create mode 100644 sources/intersex-1.gif create mode 100644 sources/intersex-2.gif create mode 100644 sources/lesbian.gif create mode 100644 sources/nonbinary.gif create mode 100644 sources/pansexual.gif create mode 100644 sources/pride.gif create mode 100644 sources/trans.gif diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..86f0ff8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +output +node_modules +package-lock.json \ No newline at end of file diff --git a/NFPixels-Regular.ttf b/NFPixels-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cd4c2cfc14ab9b05ce4c73d7c57d638e9e4aa2e0 GIT binary patch literal 31328 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..999380a --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# Pride Buttons + +Juste des boutons 88x31 de pride, généré avec l'aide de fond et de textes (présent dans data.json) + +## Lancer le générateur + +( Instruction pour bluefin, qui utilise homebrew pour ses outils en ligne de commande ) + +```shell +brew install imagemagick +brew install graphicsmagick +npm i +npm run build +``` \ No newline at end of file diff --git a/data.json b/data.json new file mode 100644 index 0000000..65ec7e1 --- /dev/null +++ b/data.json @@ -0,0 +1,67 @@ +[ + { + "source": "./sources/pride.gif", + "name": {"en":"Pride", "fr":"Pride"}, + "texts": ["LGBTQ+", "proud", "fier⋅e", "fier", "fière", "queer"] + }, + { + "source": "./sources/ace.gif", + "name": {"en":"Asexual", "fr":"Asexuel"}, + "texts": ["ace", "asexual", "asexuel", "asexuelle", "asexuel⋅le"] + }, + { + "source": "./sources/agender.gif", + "name": {"en":"Agender", "fr":"Agenre"}, + "texts": ["agender", "agenre"] + }, + { + "source": "./sources/aromantic.gif", + "name": {"en":"Aromantic", "fr":"Aromantique"}, + "texts": ["aromantic", "aromantique", "aro"] + }, + { + "source": "./sources/bisexual.gif", + "name": {"en":"Bisexual", "fr":"Bisexuel"}, + "texts": ["bisexual", "bisexuel", "bisexuelle", "bisexuel⋅le", "bi"] + }, + { + "source": "./sources/demiboy.gif", + "name": {"en":"Demiboy", "fr":"Demigars"}, + "texts": ["demiboy", "demiman", "demigars", "demihomme", "demimec"] + }, + { + "source": "./sources/demigirl.gif", + "name": {"en":"Demigirl", "fr":"Demifille"}, + "texts": ["demigirl", "demiwoman", "demifemme", "demifille", "demimeuf"] + }, + { + "source": "./sources/gay.gif", + "name": {"en":"Gay", "fr":"Gay"}, + "texts": ["gay", "homosexuel", "homosexuel⋅le"] + }, + { + "source": "./sources/intersex-1.gif", + "name": {"en":"Intersex", "fr":"Intersexué"}, + "texts": ["Intersex", "Intersexué", "Intersexuée", "Intersexué⋅e"] + }, + { + "source": "./sources/lesbian.gif", + "name": {"en":"Lesbian", "fr":"Lesbienne"}, + "texts": ["lesbienne", "lesbian", "homosexuelle", "homosexuel⋅le"] + }, + { + "source": "./sources/nonbinary.gif", + "name": {"en":"Non-Binary", "fr":"Non-binaire"}, + "texts": ["non-binary", "non-binaire", "enby", "nb"] + }, + { + "source": "./sources/pansexual.gif", + "name": {"en":"Pansexual", "fr":"Pansexuel"}, + "texts": ["pansexual", "pan", "pansexuel", "pansexuelle", "pansexuel⋅le"] + }, + { + "source": "./sources/trans.gif", + "name": {"en":"Transgender", "fr":"Transgenre"}, + "texts": ["transgender", "transgenre", "trans", "fuck\ntransphobes", "trans\nrights", "fuck\nterfs", "no to\nterfs", "Non aux\nterfs", "stop\ntransphobia", "stop à la\ntransphobie", "protect\ntrans kids", "droits\ntrans"] + } +] \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..d13538f --- /dev/null +++ b/main.js @@ -0,0 +1,51 @@ +import data from './data.json' with { type: "json" }; +import gm from "gm"; +import * as fs from "fs"; + + +const myGm = gm.subClass({imageMagick: true}); + +const position = {x: 4, y: 2, gravity: "NorthEast"} +const metadatas = [] + +data.forEach(prideflag => { + console.log(`== Creating flags for ${prideflag.name.en}`); + const imageMetadata = {title:`Drapeau ${prideflag.name.fr.toLowerCase()} :`, list:[]}; + prideflag.texts.forEach(text => { + const outputfile = `${prideflag.name.en.toLowerCase()}-${text.replace("⋅", "_").replace(" ", "_").replace("\n", '-').toLowerCase()}.png` + console.log(`Creating button for text ${text} (${outputfile})`); + const data = {file: outputfile, alt:`Drapeau ${prideflag.name.fr.toLowerCase()} avec écrit "${text.replace("\n", " ").toLowerCase()}"`}; + imageMetadata.list.push(data); + const turnedText = text + .replace("⋅", "-") + .toUpperCase(); + myGm(prideflag.source) + .font('./NFPixels-Regular.ttf', 10) + .drawText(position.x-1, position.y, turnedText, position.gravity) + .drawText(position.x+1, position.y, turnedText, position.gravity) + .drawText(position.x, position.y+1, turnedText, position.gravity) + .drawText(position.x, position.y-1, turnedText, position.gravity) + .drawText(position.x-1, position.y-1, turnedText, position.gravity) + .drawText(position.x+1, position.y+1, turnedText, position.gravity) + .drawText(position.x-1, position.y+1, turnedText, position.gravity) + .drawText(position.x+1, position.y-1, turnedText, position.gravity) + .fill("#FFFFFF") + .drawText(position.x, position.y, turnedText, position.gravity) + .write(`./output/${outputfile}`, function (err) { + if (err) { + console.error(err); + throw err; + }; + }); + }) + metadatas.push(imageMetadata); +}); + +console.log(metadatas); + +fs.writeFile("./output/pridebuttons.json", JSON.stringify(metadatas), (err) => { + if (err) { + console.error(err); + throw err; + } +}); \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..767fb88 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "pride-button", + "version": "1.0.0", + "description": "A set of pride buttons", + "scripts": { + "build": "node main.js" + }, + "dependencies": { + "gm": "^1.25.0" + } +} diff --git a/sources/ace.gif b/sources/ace.gif new file mode 100644 index 0000000000000000000000000000000000000000..0585902b36442ad875d7e6a546ef337172c472a0 GIT binary patch literal 219 zcmZ?wbhEHbj9`#wIK;vL1Pu%gix)5c|NnosrWzb6{$yd~Vqjs=0jU6~Wnf<5vEj}? zgHxW_A!e`7?*5;k(U+1rFJslZoY(u7E1WOMyp<+IabYQ zmX}0z2d($lF6)lr+4o>Wg^%9s^DjznuFl(i|AVo$-}>9fKku%)f9~`DhQzwYmg?r# zj*|Ayo>~UR2@@wxo-%dX^cgc}P2-+DZ~lUXGv_W^x@`H>B`a31nZIi7hK-ZgZ`!(+ RXWP!z+!6-+gjhHktN~%BXeR&w literal 0 HcmV?d00001 diff --git a/sources/agender.gif b/sources/agender.gif new file mode 100644 index 0000000000000000000000000000000000000000..861f5758359ce663f9d804424c1a49b4bd6e81bf GIT binary patch literal 217 zcmZ?wbhEHbj9`#wIK%(~dyX92_O`Od?Y{qEM~z?m^4CB1)amd4{J)_wudb=Jt)iv9 zt2-wpy?=sF-^3|tlc&yzpFVR=27~*8g=X^?EnVcYY^BqRRcoy^Hf-FqdCS&q+jq!H M?A*i0!pUF_03GyWaR2}S literal 0 HcmV?d00001 diff --git a/sources/aromantic.gif b/sources/aromantic.gif new file mode 100644 index 0000000000000000000000000000000000000000..13f9e075230656d7661fd2929b12d87191c53519 GIT binary patch literal 238 zcmV}5R3PZhyZ>M)j-dFX%FE2n6&TLZ76%CcJ6`mAfdBvi literal 0 HcmV?d00001 diff --git a/sources/bisexual.gif b/sources/bisexual.gif new file mode 100644 index 0000000000000000000000000000000000000000..50c2ea1a3e7342603a9c07da67976bb226b4552a GIT binary patch literal 224 zcmZ?wbhEHbj9`#wIK%)37R#?Q78LtWh43Jx;!hSvE(R6`9S|3!mVtSx$A&xq3{H7w zhd8`AyZe8FM&FX-Q!-YqdwghL0ne_Y+|^&!zE3;$e~(OohOkh-wsMhYkkNd3^^#Q+ zgBEr-mYsfEwg16}3Lm!g(=WDE>Dq0+|6#{<-SxLGe%W1jK9=QQLt|5OOKV$uM`vqY zS8recg!Z0^Q>IR9o;-cl?B1Dk<}YZRw{Xeq#Y=+qhiCI ze+H*KvqKbKoZbCDL8EWU@hKUr);&J7uYhM)QSR#Q1@CL#|39#xz=P#k*NG)Xnl?uB zFRVDPxi)HIcVpSwO=KCLZT-RNH`yzK!-TC*w|2H%?HMcZW zwsv%ObvL#5^iP;r*EebEw2mp$XU(oDDWAU}X5PXjWs8@t$X~v4O$9^vhK+9PH*MV% rvTbMJj$M1bOw11+QjNO#DP6lfLp0ah9 literal 0 HcmV?d00001 diff --git a/sources/demigirl.gif b/sources/demigirl.gif new file mode 100644 index 0000000000000000000000000000000000000000..715844e549ed03e6e81301003d5e4f9fcff887d8 GIT binary patch literal 243 zcmZ?wbhEHbj9`#wIK%(~4Gj(dH=H_h=+qhiCI ze+H*KvqKbKoZbCDL8EWU@hKUr);&J7uYhM)QSR!~3*Ohf|9@aXfd|X8t`kd&G;NIL zUs!Qob8XZ_?#8myZ>#n{*ihlamVWxhmMUGl&G$d-xUReY_C@Zdy7TXU|8Hn)YHn$$ zZ0+dm>TYW9>7OvMu5Z%RX&qCh&zfCRQa*n{%)Et5$`&tOk-vQ9nhJ*S4IACoZ`!&k rWZTZb9lQ2=nV26uq$YXz*x>`mPZ_D7KBvPiA$Ix7)oViRoD9|gr0#Wk literal 0 HcmV?d00001 diff --git a/sources/demiromantic.gif b/sources/demiromantic.gif new file mode 100644 index 0000000000000000000000000000000000000000..703850e061e9be3cdb529d3cf5a21d6c3f75946e GIT binary patch literal 223 zcmZ?wbhEHbj9`#wIK%(~#xspCUApxD|9>zKN+|whVdP?9VbB5bL24P8mw0Tr^UvUv zXLd-=i?h4`CusDkuusicweJ4OeFbY=i*oxft$ly^$bUnwf)%R-`Yn`;Zf<0labceE zt`fZ!?yr>&ysg^*U_*tEUj5eS%~fa97GHk5W6$4tx8J9j)SZ8x#oEx=)ZEhA*51+C z64uq**FT}rZ{n1x)5NCDoYf^dd*1vekp+wA2`^bbQ)tENDS~U(_X}*;Jcn<~_V#T% Sb}wX*$UkuK5I+kigEau)IAbRO literal 0 HcmV?d00001 diff --git a/sources/demisexual.gif b/sources/demisexual.gif new file mode 100644 index 0000000000000000000000000000000000000000..fccc04ffa6b63727c364a07a2c7c60e660750f08 GIT binary patch literal 223 zcmZ?wbhEHbj9`#wIK%(~c?<=YE?xTn|38=qB@}b#o68e6Eyl%*r#T!T6h2CzJfKbMY;W#*1kV{Ln zSBc&V_t#1X-d62@u%W_7uYPOv=Bl%4i!Z<3vFGo++wW6M>drsUVr^(_YHn$5Ywzf6 z3G3?Z>z~l*H*w0;X=2l6&gv4KJ#T)K$b!Z5gqJLzDYRns6u~v?`vo>^p2N3gd;7K> SyB9J@Ola6o0ZXaxri) z=zw&B%wS-7Ezsz>dauRnv(?iMDDb4zPmdq-zicTY!S?}UkyCU^BunLcA?+q7A8=S`S1f6?L=VV319R<2sTX6?H5 z8#b<8wrT6O?K{?Q*|}%$zSX<;A3D5MnCbY5lc!FfIeYH>g^Op8UAlVh`i=8fZr-_j z@AU2aj~-tYW_Pm0Bb2GA^8LW3IGEDEC2ui09XJY0007_ z9FD2W?GIx!K-i13-n{z{YDh?y=J_4y%C?;9#Pm0Bb2GA^8LW3IGEDEC2ui09XJY0007@ z9FD2W?GIx!K-i13-n{z{YDh?y=J_4y%C?;9#D<>6cfEI(3?wO3G^E`YJObTY5ktk*mAQ J>o8CN06U^mSd;(& literal 0 HcmV?d00001 diff --git a/sources/lesbian.gif b/sources/lesbian.gif new file mode 100644 index 0000000000000000000000000000000000000000..67801f498ebfc2539111860dbbe796fa378ec54e GIT binary patch literal 318 zcmZ?wbhEHbj9`#wc+9~71dExHuIe&u4V!Q=Y03LC_5ZWN{{R1b4zPmdq-zicTY!S?}UkyCU^BunLcA?+q7A8=S`S1f6?L=VV319R<2sTX6?H5 z8#b<8wrT6O?K{?Q*|}%$zSX<;A3D5MnECjLlc!FfIeYH>g^Op8UAlVh`i=8fZr-_j z@AU2aj~-tYW_}5RDkHsyZ>M)j-x2P$!t2G&}h>rty-_xCpF9MdY9X;cw7yW&*-E%%^t7YaPDG2uiNkVynfH` z`}GR~f`f#GhKGoWii?bhfsK%nl9P&$l$V&9hL)P0o{*fMqN9YNq^F*ysH>L?0k5#J zva__cwzs&swXV9ozQ4e?yurl9# D8@+@7 literal 0 HcmV?d00001 diff --git a/sources/pansexual.gif b/sources/pansexual.gif new file mode 100644 index 0000000000000000000000000000000000000000..62421aabec9c3e0ab248e4ed23a67ddcb1cb405c GIT binary patch literal 226 zcmZ?wbhEHbj9`#wIK%(~{}p=_H~#;B1I&RDia%Kxxfoa&bU*?iwG7P5JvQ9=XK>0h zJ4E5d+1>vWH2RhtpOUd^-Qz?13V3!E<*xp+_I=v1|9fN#G=zovwUvuJgN)|SKbqjR zHfsHiHD#yYrY*gmy#&7+p*FV17o_Bx$yP=Swu_c9@siU*2 zyQjCWf5OB`eeIK{O`kDy!qi!F=gse#vtaR(X^WPwSlP9F)!HR%)@_`-Vbj)S4BK|j W%MR-w^Y-J35l2mI{(0+a4@mmMy1na$ZQTL3nNa)^Et0r7Bp&`CVR`Q_`2mD zb6<*K&2GEj@VIn+S}aS-rwNi+tSm?zsq|E>g(+7?(gvN^6k0EyULe_^ZWe$^Q*0VoykYR zpTUFuIN|dI0HMQ&?kX+327rLYix@L%+{m$`$Bti&CNld-vZTqAf<*2)$+D%(J1Pyi zoJrGTnV1x6>fC8@3(g4vf(jiPtfRFa(qh0s&$VK?JMBfRg}B>%i8y8$NukWP4Li>>OZlh=wyys>$w#r zUa?NAZ>;%Nakpy!MZF3iy{^+Q-X|T%+kOATjvBx9x1YY=U3dQd<oc*)FBN UWA{!539$nQ4;>a_;bgD|0Jt4!SO5S3 literal 0 HcmV?d00001