This behavior is happening on a Lenovo Notebook DualCore 2.4GHz, 4GB RAM running Ubuntu 10.14 with Gnome 3.0.
Someone else is having this problem in DrawText slow in some other Linux?
In Windows7 64 this problem did not appear.
Thanks to collaboration.
Code: Select all
EnableExplicit
DeclareModule Designer
Structure Designer
main.l
gadget.l
id.l
x.l
y.l
width.l
height.l
xx.l
yy.l
flags.l
form.s
mouseX.l
mouseY.l
mainMouseX.l
mainMouseY.l
EndStructure
Global NewList Designer.Designer()
Global *Designer.Designer
Declare.l DesignerGadget(id.l, x.l, y.l, width.l, height.l, flags.l, window.l)
Declare DrawWindowInDesigner()
Declare ActiveText(state.l)
Global ActiveText.l
EndDeclareModule
Module Designer
Procedure ActiveText(state.l)
If state.l: ActiveText.l = #True: Else: ActiveText.l = #False: EndIf
EndProcedure
Procedure.l GetBackgroundWindowColor(WindowID_.l)
StartDrawing(WindowOutput(WindowID_.l))
ProcedureReturn Point(5, 5)
StopDrawing()
EndProcedure
Procedure DrawWindowInDesigner()
;-Designer
MouseXDesigner = GetGadgetAttribute(*Designer\id.l, #PB_Canvas_MouseX)
MouseYDesigner = GetGadgetAttribute(*Designer\id.l, #PB_Canvas_MouseY)
If MouseXDesigner <> 0: *Designer\mouseX.l = MouseXDesigner: EndIf
If MouseYDesigner <> 0: *Designer\mouseY.l = MouseYDesigner: EndIf
; Debug "*Designer\id.l = " + Str(*Designer\id.l) + " | *Designer\mousex.l: " + Str(*Designer\mouseX.l) + " | MouseXDesigner = " + Str(MouseXDesigner)
StartDrawing(CanvasOutput(*Designer\id.l))
;background color
Box(0,0, OutputWidth(), OutputHeight(), $ededed)
;grid
For x = 0 To OutputWidth() Step 10
For y = 0 To OutputHeight() Step 10
Plot( x, y, 0 )
Next
Next
;-Rules
;Horizontal Rule
For rX=0 To OutputWidth() Step 5
cont=cont+1:If cont=5: cont=1: size=7:Else:size=5:EndIf
Line(rX, 0, 1, size, RGB(128,128,128))
Next
;Vertical Rule
For rY=0 To GadgetHeight(*Designer\id.l) Step 5
cont=cont+1:If cont=5: cont=1: size=7:Else:size=5:EndIf
Line(0, rY, size, 1, RGB(128,128,128))
Next
;Pointer Lines
Line(*Designer\mouseX.l, 0, 1, 7, RGB(255,0,0))
Line(0, *Designer\mouseY.l, 7, 1, RGB(255,0,0))
;Mark Lines
Line(*Designer\mouseX.l, 5, 1, OutputHeight()-5, RGB(0,0,255))
Line(5, *Designer\mouseY.l, OutputWidth()-5, 1, RGB(0,0,255))
If ActiveText.l
DrawText(*Designer\mouseX.l, *Designer\mouseY.l, " SLOW ", RGB(255,0,0), RGB(255,255,255))
EndIf
StopDrawing()
EndProcedure
Procedure.l DesignerGadget(id.l, x.l, y.l, width.l, height.l, flags.l, window.l)
LastElement(Designer())
*Designer = AddElement(Designer())
*Designer\gadget.l = id.l
*Designer\x.l = x.l
*Designer\y.l = y.l
*Designer\width.l = width.l
*Designer\height.l = height.l
*Designer\flags.l = flags.l
*Designer\xx.l = width.l - x.l
*Designer\yy.l = height.l - y.l
*Designer\id.l = CanvasGadget(*Designer\gadget.l, (*Designer\x + 10) + jumpLeft.l, (*Designer\y + 10) + jumpTop.l, *Designer\width, *Designer\height, *Designer\flags.l)
SetGadgetAttribute(*Designer\id.l, #PB_Canvas_Cursor, #PB_Cursor_Cross)
ProcedureReturn *Designer\gadget.l
EndProcedure
EndModule
CompilerIf #PB_Compiler_IsMainFile
Define Event.l, DesignerID.l, ButtonActiveText.l
OpenWindow(0, 0, 0, 800, 600, "Window Test Designer", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
DesignerID.l = Designer::DesignerGadget(#PB_Any, 0, 0, 600, 480, #PB_Canvas_Border|#PB_Canvas_Keyboard, 0)
ButtonActiveText.l = CheckBoxGadget(#PB_Any, 630, 10, 140, 25, "Active DrawText")
Repeat
Event.l = WaitWindowEvent()
Designer::DrawWindowInDesigner()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case ButtonActiveText.l
Designer::ActiveText(GetGadgetState(ButtonActiveText.l))
EndSelect
EndSelect
Until Event.l = #PB_Event_CloseWindow
CompilerEndIf