J'avoue ne pas être habituer au travail en équipe mais je me dis que c'est une bonne expérience. Tout conseille est donc le bienvenu.
Comme il faut bien commencer part quelques choses, et que c'est un projet qui me travaille depuis quelques temps, voici le fruit de ma réflexion. N'hésitez pas a réagir.
Avant de se mettre a coder dans tout les sens, je pense qu'il faut se mettre d'accord sur un certain nombre de chose avant d'aller plus loin. Attention ce n'est qu'une proposition, loin de moi l'idée d'imposer quoi que ce soit !
Je crois qu'il y a 3 points important dont tout le monde aura besoin
- Définir la structure des informations propre aux calques et a l'image
Il faut pouvoir ouvrir plusieurs Images, et chaque images être composé de Layer avec différentes infos
voici une proposition de structure si quelqu'un a mieux qu'il n'hesite pasQu'en pensez vous ?Code : Tout sélectionner
Structure Layer Active.b ; #True ou #False si ce calque est affiché ou pas Image.l ; Image originale Opacity.b ; Transparence global de l'image : ConstAlpha de la function DrawAlphaImage() BlendingMode.l ; Je sais pas si c'est gérable il y a un exemple d'utilisation sur le forum Anglais FusionMaskImage.l ; Image comportant le Mask de fusion si il y a ! ;http://www.purebasic.fr/english/viewtopic.php?f=13&t=36311 EndStructure #Max_Layer=255 Structure Image FileName.s ;Nom de l'image RenderImage.l ;Image de rendu des layers WorkImage.l ; Image redimensionné et affiché ! Depth.b ;Profondeur de l'image (peut être n'en a t'on pas besoin ImageDepth() suffit ImageSelection.l ;Image comportant le Masque de Selection Layer.l ;Numero du layer selectionné Layers.Layer[#Max_Layer] ;Les informations sur les layers mais je ne sais pas si c'est la bonne façon de faire EndStructure #Max_Image=20 Global Dim Workbench.Image(#Max_Image) Procedure RenderLayers(Imag) EndProcedure
- Définir les functions de dessin qui seront utile pour chaque outil
La plus part des outils devront dessiné en fonction d'une couleur, d'un dégradé, ou d'un motif
peut être écrire une procédure générale qui remplacerait la commande plot() en fonction de ce qu'on utilise pour dessinerCode : Tout sélectionner
;Variable général aux outils (a voir si ces infos devraient pas être propre a chaque outil) Structure ToolsInfo FrontColor.l ;Couleur de premier plan BackgroundColor.l ;Couleur d'arrière plan ToolRenderMode.l ;Mode de rendu des outils voir enumeration si dessous Couleur/Gradiant/Pattern EndStructure Global ToolsInfo.ToolsInfo ;Mode de rendu d'un outil Enumeration #ModeCouleur ;On utilise les couleur de premier et arrière plan #ModeGradiant ;On utilise un dégradé #ModePattern ;On utilise un motif EndEnumeration Procedure RenderPlot(x.l,y.l,Color.l) Select ToolsInfo\ToolRenderMode Case #ModeCouleur Case #ModeGradiant Case #ModePattern EndSelect EndProcedure
- Définir les functions de Undo Redo (vu que chaque outil devra les utiliser)
je ne sais pas trop quel est la meilleur façon de faire ça ...
Je me demande si ça ne serait pas bon de faire un fichier Temporaire style base de donnée Sqlite
et chaque outil sauvegarde les modifications faites dans la base de donnée (Blob) ?
ce qui permettrait de revenir ou on veut en arrière... Si quelqu'un a une idée ...
Et je propose que pour les variables on les nomes en Anglais chaque mot collé, mais avec une majuscule au debut de chaque mot. Idem pour les procedures
Exemple:
MaVariable.l
RenderLayer()
FillPattern()
Voilà j'attends vos remarques, idées, suggestion, proposition etc..
