pdulvp.fr

Le jeu dessiné dans la cartothèque, et l'atelier qui le pose has been fixed.

See more details at : https://github.com/pdulvp/pdcartes-barquette/issues/4

  • la cartothèque dessine désormais une carte (CardArt) et en fait des images

(DrawnDeck) : l'atelier n'a plus besoin d'images venues d'ailleurs pour
produire un jeu complet

  • onglet « Le jeu dessiné » à droite : un thème, huit couleurs réglables dont

le panneau beige du roi, de la dame, du valet et du joker, et quatre boutons
pour remplir les cases

  • le panneau se retire d'une case à cocher — l'emblème est alors posé à même

le papier, les traits évidés s'y découpant — et un facteur de 30 à 180 pour
cent grossit ou réduit la couronne, le diadème, la fleur de lis et le bonnet

  • les réglages vont par trois : « Les couleurs » (le thème et sept pastilles),

« Les figures » (le panneau, sa couleur et la taille de l'emblème) et
« L'image » (la hauteur de rendu), empilés dans l'onglet et en colonnes sous
la grille

  • section « La carte dessinée » sous la grille : la case choisie se retouche

et se redessine à chaque changement ; « Appliquer à tout » étend le réglage
à toutes les cartes dessinées du jeu

  • la recette d'une case dessinée est conservée dans le .cartes, en queue du

corps et sans changer la version du format : un binaire déjà installé lit le
fichier sans rien voir du bloc, vérification faite avec le paquet 1.1.1

Le jeu dessiné passe dans la cartothèque, et l'atelier le pose

<sub>2026-10-27-0746-le-jeu-dessine-dans-la-cartotheque-et-dans-l-atelier.md — 2026-10-27 07:46</sub>

Le dessin des cartes vit aujourd'hui dans pdcartes-rami, sous
src/CardArt.cpp : c'est lui qui trace les symboles, les figures sur leur
panneau beige et le treillis du dos. L'atelier, qui fabrique les jeux, ne sait
pas le faire et ne part donc que d'images extérieures.

Le travail déplace ce dessin dans la cartothèque, la bibliothèque que les deux
programmes partagent, puis en fait une source de cartes dans l'atelier : on
pose le jeu dessiné dans les cases vides, on retouche ses couleurs — celle du
panneau beige des figures notamment —, et le jeu s'enregistre comme n'importe
quel autre fichier .cartes.

Le dépôt card-sol a son propre plan pour la part qui le concerne.

Décisions

  • Ce qui part et ce qui reste. La cartothèque reçoit le dessin d'une carte

seule : les symboles de couleur, les trois figures, le joker, le treillis du
dos, l'arrondi des coins et la police de base. Tout ce qui relève de la
table — le tapis et sa trame, les plaques, les médaillons d'adversaires, les
étoiles de niveau, les jauges, les tas de dos — reste dans pdcartes-rami,
qui seul en a l'usage.

  • La carte est désignée par deux entiers, le rang et la couleur, et non

par le Card de pdcartes-rami : ce type porte l'identité d'une carte
parmi cent huit, ce dont le dessin n'a que faire. La numérotation est celle
de CardSet::slotFor(), déjà commune aux deux programmes.

  • Les couleurs sont rassemblées dans un CardStyle au lieu d'être tirées

de la palette à l'intérieur du dessin. C'est ce qui rend le panneau beige
modifiable : une palette ne propose pas cette couleur, un style l'expose.
CardStyle::fromPalette() reconstitue le style que pdcartes-rami emploie
aujourd'hui, de sorte que son rendu ne change pas.

  • Une recette par case, conservée dans le fichier. Une case dessinée garde

son style et sa résolution, faute de quoi un jeu rouvert ne serait plus
qu'une collection d'images figées. Le bloc est écrit après les dos, à la
queue du corps compressé, et la version du format reste à 1 : un lecteur
écrit avant ce jour s'arrête aux dos et ignore la suite, et un .cartes
fabriqué aujourd'hui s'ouvre donc dans un pdcartes-rami déjà installé.

  • Deux éditeurs de couleurs, un seul widget. L'onglet de droite règle le

style des cartes à poser ; la section de gauche règle celui de la carte
choisie. Le même CardStyleEditor sert aux deux, en version complète à
droite et compacte à gauche.

Étapes

  1. [x] lib/CardArt.h, lib/CardArt.cpp — le dessin d'une carte, déplacé

depuis card-sol/src/CardArt.cpp : kCardRatio, cardCornerFor(),
plainFont(), cardRankLabel(), cardSuitIsRed(), CardStyle,
DrawnRecipe, drawPip(), drawSuitPip(), drawDefaultFace(),
drawDefaultBack().

  1. [x] lib/CardSet.h, lib/CardSet.cpp — les recettes : recipe(),

setDrawnFace(), addDrawnBack(), hasRecipe(), drawnTargets().
setFace(), clearFace(), setBack(), addBack() et removeBack()
les entretiennent. Le bloc facultatif en queue du corps.

  1. [x] lib/DrawnDeck.h, lib/DrawnDeck.cpp — drawnFaceArt(),

drawnBackArt(), drawnCardSet().

  1. [x] lib/CMakeLists.txt — les trois fichiers ajoutés.
  2. [x] src/CardStyleEditor.h, src/CardStyleEditor.cpp — l'aperçu et les

pastilles de couleur, en version complète et compacte.

  1. [x] src/AtelierWindow.h, src/AtelierWindow.cpp — le panneau de droite

en onglets, l'onglet « Le jeu dessiné » et ses quatre boutons, la
section « La carte dessinée » sous la grille, et l'entretien des
recettes au fil des poses.

  1. [x] src/FaceGrid.cpp — une marque sur les cases dessinées, et

suitIsRed reprise de la cartothèque.

  1. [x] CMakeLists.txt — le nouveau source de l'atelier.
  2. [x] src/HelpDialog.cpp — un paragraphe sur le jeu dessiné.
  3. [x] Bâtir en série, et lancer l'atelier.
  4. [x] docs/plans/sumup.md, archivage du plan.

Vérifié

Bâti en série : cartotheque et pdcartes-barquette compilent et se lient
sans avertissement.

L'atelier lancé sur un .cartes produit par pdcartes-rami --exporter-cartes
montre les cinquante-trois cases pleines, chacune marquée d'une pastille, et
la section « La carte dessinée » s'ouvre sous la grille sur la case choisie :
les recettes ont donc bien traversé le fichier, écrites par un programme et
relues par l'autre.

Le même fichier ouvert avec le binaire du paquet 1.1.1, antérieur au bloc des
recettes, affiche ses 53 faces et son dos sans erreur : le bloc en queue est
ignoré, comme prévu.

Le panneau des figures se retire, l'emblème se redimensionne

<sub>2026-10-27-0813-le-panneau-des-figures-se-retire.md — 2026-10-27 08:13</sub>

Les couleurs d'une carte dessinée se règlent ; le panneau beige derrière le
roi, la dame, le valet et le joker, lui, est toujours là, et l'emblème qu'il
porte a toujours la même taille. Demandé : pouvoir retirer le panneau et le
remettre, et grossir ou réduire la forme qui est dedans.

Décisions

  • Un booléen dans CardStyle, et non une couleur transparente. Un panneau

transparent laisserait son filet, et le filet est ce qui se voit en premier.
Et les traits évidés de l'emblème — le bandeau de la couronne, celui du
diadème, la ceinture de la fleur de lis — sont tracés dans la couleur du
panneau pour s'y découper : sans panneau, c'est la couleur du papier qu'il
leur faut. Un booléen dit les deux choses d'un coup.

  • Retirer le panneau ne déplace rien. L'emblème garde la taille et la

place qu'il avait : une case à cocher qui déplacerait le dessin en même
temps qu'elle retire un rectangle ferait deux choses à la fois. L'emblème
paraît alors plus seul — c'est précisément ce que le panneau corrigeait, et
c'est le réglage suivant qui permet d'y répondre.

  • La taille de l'emblème est un facteur, et non une mesure. Il est inscrit

dans un carré déduit du panneau, lui-même déduit de la carte ; une taille en
pixels ne voudrait rien dire d'une carte à l'autre, les cartes étant rendues
à la hauteur qu'on demande. Le facteur est borné entre 30 et 180 pour cent :
en dessous l'emblème disparaît, au-dessus il déborde du papier.

  • La case à cocher tient lieu d'étiquette à la pastille. Elle est posée là

où se lisait « Panneau des figures », à côté de la pastille qui en donne la
couleur : la présence et la couleur du même élément se règlent au même
endroit, et la pastille s'éteint quand le panneau est retiré.

  • Le bloc des recettes passe en version 2. Il porte un champ de plus. Une

recette lue en version 1 n'en a pas et garde le panneau, qui était alors le
seul comportement.

Étapes

  1. [x] lib/CardArt.h — panelled et emblemSize dans CardStyle, et

l'égalité qui en tient compte.

  1. [x] lib/CardArt.cpp — paintCourtMark() reçoit le style entier ; le

panneau du joker devient conditionnel lui aussi, et les deux emblèmes
suivent le facteur de taille.

  1. [x] lib/CardSet.cpp — bloc des recettes en version 2 : les deux champs

sont écrits, et leur absence vaut « panneau conservé, emblème à cent
pour cent ».

  1. [x] src/CardStyleEditor.h, src/CardStyleEditor.cpp — la case à cocher à

la place de l'étiquette, la pastille éteinte quand elle est décochée, et
le champ de taille de l'emblème.

  1. [x] src/HelpDialog.cpp — deux phrases.
  2. [x] Bâtir en série les deux programmes, et vérifier à l'écran.
  3. [x] docs/plans/sumup.md, archivage du plan.

Vérifié

Bâti en série : cartotheque, pdcartes-barquette et pdcartes-rami
compilent et se lient sans avertissement.

Vérifié à l'écran avec un style posé en dur le temps d'une compilation : le
roi de cœur et le joker perdent bien leur rectangle beige, leurs traits évidés
se découpant alors sur le papier, et l'emblème porté à 145 pour cent remplit
la carte sans la déborder. La case à cocher était décochée et sa pastille
éteinte, le champ affichait 145 %. Les deux réglages temporaires ont été
retirés ensuite.

Le .cartes ouvert dans la foulée rend bien ses recettes à l'éditeur compact,
lesquelles remplacent celles de l'onglet : un fichier écrit en version 1 du
bloc garde donc son panneau et un emblème à cent pour cent, comme prévu.

Les réglages d'une carte dessinée en trois parties

<sub>2026-10-27-0836-les-reglages-d-une-carte-en-trois-parties.md — 2026-10-27 08:36</sub>

Les réglages d'une carte dessinée sont arrivés les uns après les autres, et se
lisent dans l'ordre où ils ont été ajoutés : huit pastilles en bloc, un thème
et deux champs posés au-dessus. Demandé : les regrouper, les couleurs d'un
côté, le panneau des figures et la taille de l'emblème de l'autre.

Décisions

  • Trois parties, et non deux. Les couleurs et les figures sont celles

qu'on demande ; reste la hauteur de rendu, qui n'est ni l'une ni l'autre —
c'est une propriété de l'image produite, pas de la carte. Elle a donc sa
partie, « L'image », plutôt que d'être laissée au bout d'une des deux.

  • La pastille du panneau suit sa case à cocher. Elle quitte le bloc des

couleurs pour la partie des figures : la couleur du panneau ne se règle pas
sans lui, et les deux réglages se commandent du même endroit. Il reste donc
sept pastilles dans les couleurs.

  • Le thème reste avec les couleurs. Il ne donne que cela, le panneau et la

taille de l'emblème survivant à un changement de thème.

  • Les titres sont ceux de la maison, dialogSectionHeading(), en version

compacte comme en version complète. Un deuxième jeu de titres n'apprendrait
rien de plus au lecteur, et celui-ci est déjà recoloré au changement de
thème sans qu'il y ait rien à ajouter.

  • En version compacte, les trois parties sont côte à côte et non

empilées : sous la grille, la place est en largeur. La section y gagne une
cinquantaine de pixels en hauteur, pris sur l'espace vide que la grille
laissait en dessous d'elle.

Étapes

  1. [x] src/CardStyleEditor.cpp — les trois blocs : les couleurs (thème et

sept pastilles), les figures (panneau et taille de l'emblème),
l'image (hauteur).

  1. [x] src/CardStyleEditor.cpp — les deux dispositions, l'une empilée et

l'autre en colonnes, assemblées à partir des mêmes blocs.

  1. [x] Bâtir en série, et vérifier les deux dispositions à l'écran.
  2. [x] docs/plans/sumup.md, archivage du plan.

Vérifié

Bâti en série : pdcartes-barquette compile et se lie sans avertissement.

Les deux dispositions vérifiées à l'écran, un .cartes ouvert : l'onglet
empile ses trois titres sous l'aperçu, la section sous la grille les range en
trois colonnes à côté de la carte choisie, et les sept pastilles de couleur
sont bien séparées du panneau et de sa pastille.

La section compacte ayant gagné trois titres, elle est d'abord devenue assez
haute pour que la dernière rangée de la grille soit rognée. L'aperçu, les
pastilles et les interlignes ont été resserrés de quelques pixels : la rangée
du joker et des dos est de nouveau entière.

<sub>Filed by prel from the completed plans at commit time.</sub>