with Gb; use Gb; with Gb.OleInterfaces; with Win32, Win32.WinDef, Win32.WinMain, Win32.WinUser, Win32.WinError, System; with Win32.WinGDI, Win32.WinBase, Win32.WinNT, Win32.Utils, Interfaces.C; use Win32, Win32.WinError, Interfaces.C, System; with MSComctlLib_Slider; use MSComctlLib_Slider; package Main_Win is Form : aliased Gb.MainWindow; Frm_Ensembles : aliased Gb.Frame; Rad_Mandel : aliased Gb.RadioButton; Rad_Julia : aliased Gb.RadioButton; Txt_Cx : aliased Gb.TextBox(Alignment => Right, AutoScroll => Both, MultiLine => Gb.False, Password => Gb.False, ReadOnly => Gb.False); Txt_Cy : aliased Gb.TextBox(Alignment => Right, AutoScroll => Both, MultiLine => Gb.False, Password => Gb.False, ReadOnly => Gb.False); Ch_Antialiasing : aliased Gb.CheckBox; Txt_Iterations : aliased Gb.TextBox(Alignment => Right, AutoScroll => Both, MultiLine => Gb.False, Password => Gb.False, ReadOnly => Gb.False); But_Redraw : aliased Gb.Button; Lab_Cx : aliased Gb.Label; Lab_Cy : aliased Gb.Label; Pic_Draw : aliased Gb.Picture; Img_Logo : aliased Gb.Image; Frm_Iterations : aliased Gb.Frame; Frm_Part_Droite : aliased Gb.Frame; Frm_Part_Bas : aliased Gb.Frame; Slid_Iterations : aliased MSComctlLib_Slider.SliderCtrl(Parent => Frm_Iterations'access); package Slid_Iterations_Interfaces is new Gb.OleInterfaces(Slid_Iterations'access, "Main_Win_Slid_Iterations"); procedure Initialize_Form; end Main_Win; with GbOBJECTs; use GbOBJECTs; with Public; package body Main_Win is procedure Rad_Mandel_Click is begin if Gb.Value(Rad_Mandel) = 1 then Gb.Value(Rad_Julia, 0); Gb.Enabled(Txt_Cx, 0); Gb.Enabled(Txt_Cy, 0); else Gb.Value(Rad_Julia, 1); Gb.Enabled(Txt_Cx, 1); Gb.Enabled(Txt_Cy, 1); end if; end Rad_Mandel_Click; procedure Rad_Julia_Click is begin if Gb.Value(Rad_Julia) = 1 then Gb.Value(Rad_Mandel, 0); Gb.Enabled(Txt_Cx, 1); Gb.Enabled(Txt_Cy, 1); else Gb.Value(Rad_Mandel, 1); Gb.Enabled(Txt_Cx, 0); Gb.Enabled(Txt_Cy, 0); end if; end Rad_Julia_Click; procedure Txt_Iterations_Changed is Nb_Iterations : Gb.Long; Nb_Iteration_Min : constant := 10; Nb_Iteration_Max : constant := 1000; begin Nb_Iterations := Gb.Long'Value(Text(Txt_Iterations)); if Nb_Iterations >= Nb_Iteration_Min and Nb_Iterations <= Nb_Iteration_Max then Value(Slid_Iterations, Nb_Iterations); end if; end Txt_Iterations_Changed; procedure But_Redraw_Click is begin null; --line(Image2, 10, 10, 100, 100 , Color(122, 122, 122), 0,1); end But_Redraw_Click; procedure Slid_Iterations_Scroll is begin Text(Txt_Iterations,Gb.Long'Image(Value(Slid_Iterations))); end Slid_Iterations_Scroll; procedure Form_WindowResized(Flag : Gb.INT; Width : Gb.INT; Height : Gb.INT) is begin --gb.Width(Pic_Draw) + gb.Width(Frm_Part_Droite) + 16 if Gb.Width(Main_Win.Form) < 542 then Gb.Width(Main_Win.Form, 542); end if; if Gb.Height(Main_Win.Form) < 369 then Gb.Height(Main_Win.Form, 369); end if; --redimmensionnement de la zone de dessin Gb.Width(Pic_Draw, Gb.Width(Main_Win.Form) - Gb.Width(Frm_Part_Droite) - 16 ); Gb.Height(Pic_Draw, Gb.Height(Main_Win.Form) - Gb.Height(Frm_Part_Bas) - 35 ); --Deplacement de la frame de droite Gb.Left(Frm_Part_Droite, Gb.Width(Main_Win.Form) - Gb.Width(Frm_Part_Droite) - 9 ); --Deplacement de la frame du bas Gb.Top(Frm_Part_Bas, Gb.Height(Main_Win.Form) - Gb.Height(Frm_Part_Bas) - 30); --Deplacement du logo (en bas a gauche) end Form_WindowResized; procedure Initialize_Form is begin Caption(Frm_Ensembles, "Ensembles"); Move(Frm_Ensembles, 6, 10, 89, 134); Parent(Frm_Ensembles, Frm_Part_Droite); Rad_Mandel.Click := Rad_Mandel_Click'access; Caption(Rad_Mandel, "Mandelbrot"); Value(Rad_Mandel, Gb.True); Move(Rad_Mandel, 8, 18, 77, 13); Parent(Rad_Mandel, Frm_Ensembles); Rad_Julia.Click := Rad_Julia_Click'access; Caption(Rad_Julia, "Julia"); TabStop(Rad_Julia, Gb.False); Move(Rad_Julia, 8, 59, 61, 13); Parent(Rad_Julia, Frm_Ensembles); Enabled(Txt_Cx, Gb.False); Text(Txt_Cx, "0"); Move(Txt_Cx, 31, 86, 51, 21); Parent(Txt_Cx, Frm_Ensembles); Enabled(Txt_Cy, Gb.False); Text(Txt_Cy, "0"); Move(Txt_Cy, 31, 107, 51, 21); Parent(Txt_Cy, Frm_Ensembles); Caption(Ch_Antialiasing, "Antialiasing"); Move(Ch_Antialiasing, 12, 206, 74, 13); Parent(Ch_Antialiasing, Frm_Part_Droite); Txt_Iterations.Changed := Txt_Iterations_Changed'access; Text(Txt_Iterations, "0"); Move(Txt_Iterations, 3, 30, 84, 19); Parent(Txt_Iterations, Frm_Iterations); But_Redraw.Click := But_Redraw_Click'access; Caption(But_Redraw, "REDRAW"); Move(But_Redraw, 7, 244, 88, 20); Parent(But_Redraw, Frm_Part_Droite); Caption(Lab_Cx, "Cx"); SetFont(Lab_Cx, "MS Sans Serif", 8, Gb.False, Gb.False, Gb.False); Move(Lab_Cx, 14, 89, 14, 21); Parent(Lab_Cx, Frm_Ensembles); Caption(Lab_Cy, "Cy"); SetFont(Lab_Cy, "MS Sans Serif", 8, Gb.False, Gb.False, Gb.False); Move(Lab_Cy, 14, 109, 16, 21); Parent(Lab_Cy, Frm_Ensembles); Cursor(Pic_Draw, Gb.CrossCursor); Move(Pic_Draw, 3, 4, 422, 259); Bitmap(Img_Logo, Gb.LoadBitmapResource("Img_Logo_Bitmap")); Border(Img_Logo, Gb.False); Move(Img_Logo, 1, 287, 100, 48); Parent(Img_Logo, Frm_Part_Droite); Caption(Frm_Iterations, "Iterations"); Move(Frm_Iterations, 7, 145, 89, 51); Parent(Frm_Iterations, Frm_Part_Droite); Caption(Frm_Part_Droite, ""); Move(Frm_Part_Droite, 429, -2, 104, 341); Caption(Frm_Part_Bas, ""); Move(Frm_Part_Bas, 3, 264, 423, 75); Slid_Iterations.Scroll := Slid_Iterations_Scroll'access; Move(Slid_Iterations, 2, 14, 84, 14); Form.WindowResized := Form_WindowResized'access; Icon(Form, Gb.LoadIconResource("Main_Win_Icon")); Caption(Form, "Power Fractal 0.1"); MaxButton(Form, Gb.False); Move(Form, 149, 269, 542, 369); Visible(Form, Gb.True); end Initialize_Form; begin Initialize_Form; end Main_Win; with Gb; with Main_Win; procedure PowerFractal is begin Gb.StartApplication; end PowerFractal;