MindMap (Organiser des idées)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: MindMap (Organiser des idées)

Message par Mindphazer »

falsam a écrit :Merci d'avoir tester. Je change le nom du fichier de langue française pour la prochaine version. (french.txt)
Pas de problème, c'est avec plaisir
Si j'ai le temps (et le courage), j'essaierai de faire des tests par rapport à cette histoire de "ç", vu que j'ai les 2 plateformes

Je me doute que tu as d'autres chats à fouetter...
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: MindMap (Organiser des idées)

Message par falsam »

Le source de La version 1.90 est disponible au téléchargement (Voir 1er message)

Ayant eu besoin d'un tableau, j'ai ajouter l'entité tableau.
Le fonctionnement est simple. Une fois l'entité ajouté, passer en mode édition (Ctrl+Entrée) puis taper les élements de votre tableau en insérant le caractére ";" entre chaque cellule du tableau. La 1er ligne sera l'entête du tableau.
Image

-La marge gauche est réglable depuis l'éditeur d'entité.
-Le centrage ne fonctionnera pas bien que présent dans l'inspecteur.
-Les nombres sont automatiquement cadrés à droite.

-Ce tableau peut aussi servir à créer une liste en ne mettant pas le séparateur ";".

N'hésitez pas à ouvrir l'exemple se trouvant dans le dossier ......exemple :)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: MindMap (Organiser des idées)

Message par dayvid »

P'tin Falsam, tu m'épate :o
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: MindMap (Organiser des idées)

Message par venom »

Bonjour,

ça avance bien, Bravo falsam. Bonne continuation.





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: MindMap (Organiser des idées)

Message par Kwai chang caine »

Ca deviens un avion ton truc 8O
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: MindMap (Organiser des idées)

Message par falsam »

Sur ce post, G-Rom fourni une procédure géniale permettant de calculer le point du milieu entre deux vecteurs. Cette procédure va m'aider à placer maintenant du texte sur une relation parent -> Enfant.

J'aimerais aussi pouvoir placer du texte dans l'axe de deux points en utilisant cette fonction DrawRotatedText(x, y, Texte$, Angle.f [, Couleur]) mais je ne sais pas comment calculer un angle entres deux points.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: MindMap (Organiser des idées)

Message par G-Rom »

Avec Atan2() :

Radian.f = ATan2(x1-x2,y1-y2)
Degree.f = (ATan2(x1-x2,y1-y2) * 180 / #PI) + 180

Code : Tout sélectionner

x1.f = 500
y1.f = 500

For angle = 0 To 359
  x2.f = x1 + 100 * Cos(angle * #PI / 180)
  y2.f = y1 + 100 * Sin(angle * #PI / 180)
  
  AngleCalcul.f = (ATan2(x1-x2,y1-y2) * 180 / #PI)+180
  Debug "Angle véritable : " + Str(angle) + " Angle Atan2() = " + Str(AngleCalcul)
Next 

@++
Avatar de l’utilisateur
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: MindMap (Organiser des idées)

Message par Mindphazer »

J'ai trouvé cette formule (en C)
double x1, x2, y1, y2;

x1 = 2*cos(pi/6);
y1 = 2*sin(pi/6);
x2 = 3*cos(pi/2);
y2 = 3*sin(pi/2);

printf("x1 = %f\ty1 = %f\n", x1, y1);
printf("x2 = %f\ty2 = %f\n", x2, y2);
printf("angle entre les deux : %lf = %lf\n", atan(y2/x2)-atan(y1/x1), pi/3);

[Edit] : grillé par G-Rom....
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: MindMap (Organiser des idées)

Message par falsam »

Merci G-Rom et Mindphazer. Un peu de code pour voir le résultat dans lequel je trace deux segment et du texte qui va suivre ces deux segments.

Code : Tout sélectionner

Enumeration
  #Mainform
EndEnumeration

Define.l Event

Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered

Structure vector2f
  x.f
  y.f
EndStructure

Procedure.i NewVector2f(x.f = 0 ,y.f = 0)
  *v.vector2f = AllocateMemory(SizeOf(vector2f))
  If *v
    
    *v\x = x
    *v\y = y
    
    ProcedureReturn *v
  Else
    ProcedureReturn #Null
  EndIf 
EndProcedure

Procedure FreeVector2f(*v.vector2f)
  If *v <> #Null 
    FreeMemory(*v)
  EndIf 
EndProcedure

Procedure.i midPoint(*a.vector2f, *b.vector2f)
  *v.vector2f = AllocateMemory(SizeOf(vector2f))
  If *v

    *v\x = ( *a\x + *b\x ) * 0.5
    *v\y = ( *a\y + *b\y ) * 0.5

    ProcedureReturn *v
  Else
    ProcedureReturn #Null
  EndIf 
EndProcedure

; vive les macros...
Macro position(v)
  v\x,v\y  
EndMacro

Procedure Open_MainForm()
  OpenWindow(#Mainform, 0, 0, 500, 300, "Texte", WindowStyle)
  
  StartDrawing(WindowOutput(#Mainform))
  
  ;1er segment
  *A.vector2f = NewVector2f(100 , 100)
  *B.vector2f = NewVector2f(200 , 250)
  *MidPoint.vector2f  = MidPoint(*A, *B)

  Circle(position(*A),2,0)
  Circle(position(*B),2,0)
  Circle(position(*MidPoint), 4, $FF)
  
  LineXY(position(*A), Position(*B), RGB(105, 105, 105))
  
  AngleCalcul.f = (ATan2(*a\x-*b\x, *a\y-*b\y) * 180 / #PI)+180
  
  DrawRotatedText(Position(*A), "Lorem  ipsum dolor amet", AngleCalcul*-1, RGB(255, 0, 0))
  
  ;2eme segment
  *C.vector2f = NewVector2f(450 , 20)
  *MidPoint.vector2f  = MidPoint(*B, *C)
  Circle(position(*C),2,0)
  Circle(position(*MidPoint), 4, $FF)
  
  LineXY(position(*B), Position(*C), RGB(105, 105, 105))
  
  AngleCalcul.f = (ATan2(*B\x-*C\x, *B\y-*C\y) * 180 / #PI)+180
  
  DrawRotatedText(Position(*B), "Lorem  ipsum dolor amet consectetur adipiscing", AngleCalcul*-1, RGB(255, 0, 0))
  StopDrawing()
  
  FreeVector2f(*A)
  FreeVector2f(*B)
  FreeVector2f(*C)

EndProcedure
 
Open_MainForm()

Repeat
  Event  = WaitWindowEvent(10)
  Select Event
    Case #PB_Event_Gadget
        
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: MindMap (Organiser des idées)

Message par G-Rom »

DrawRotatedText() à vraiment un rendu cradingue...
toute les lettres sont décalée.

sinon ton projet à l'air sympa ^^
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: MindMap (Organiser des idées)

Message par blendman »

salut Falsam

Bravo pour tout ce boulot, c'est vraiment très sympa, et cet outil (mindmap) pourrait m'être utile très bientôt ;)

Sinon, j'ai regardé ton code, et niveau enumeration, tu as fait ce que fred a dit qu'il fallait éviter c'est à dire tout mélanger (fenêtre, gadget, menu, image, etc..)
ce n'est pas trop gênant pour le moment, car le programme n'est pas trop gros, mais s'il grossissait ça pourrait le devenir ^^.

En tout cas, bravo encore ;).
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: MindMap (Organiser des idées)

Message par falsam »

blendman a écrit :Sinon, j'ai regardé ton code, et niveau enumeration, tu as fait ce que fred a dit qu'il fallait éviter c'est à dire tout mélanger (fenêtre, gadget, menu, image, etc..)
Bonjour Blendman. On pourrait penser que tout est mélangé. L'énumération est dans l'ordre des fenêtres et largement documentée comme tu as pu le voir. Je vais néanmoins tacher de remédier d'y remédier dans une nouvelle version. Merci pour cette remarque.
En attendant, le code provoquant 5 erreurs de compilation avec la version 5.10 de Pure Basic, j'ai modifié le code en conséquence. (Correction sur les pointeurs et sur les comparaison de string).
Les erreurs étant mineur, Je n'ai pas changé le numéro de version du code que vous pouvez télécharger depuis le premier message.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: MindMap (Organiser des idées)

Message par falsam »

La fonction CreateXMLNode() des versions antérieures de PureBasic n'étant plus compatible avec la version 5.31 de Pure Basic, le code de MinMap est modifié.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: MindMap (Organiser des idées)

Message par majikeyric »

Merci falsam,
je ne connaissais pas ton outil, faut que je le teste, il m'a l'air bien cool! (et très propre comme tout ce que tu fais 8) ).
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: MindMap (Organiser des idées)

Message par Kwai chang caine »

Ouai...c'est un super code...un boulot de ouf 8O
Un peu compliqué pour kcc...mais splendide, il doit le reconnaître
Merci de la maj 8)
Ca pourrait me servir le jour ou je comprendrais le code :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre