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; Image2 : aliased gb.Image; 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 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); 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); Move(Image2, 197, 15, 109, 51); Parent(Image2, Frm_Part_Bas); Slid_Iterations.Scroll := Slid_Iterations_Scroll'Access; Move(Slid_Iterations, 2, 14, 84, 14); Form.WindowResized := Form_WindowResized'Access; Caption(Form, "Power Fractal 0.1"); MaxButton(Form, gb.False); Move(Form, 203, 205, 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;