Preview dialog.bmx 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. AppTitle = My.Application.AssemblyInfo
  2. Const Space:Int = 200
  3. If AppArgs.length = 1 Then
  4. Notify("Missing command parameter.")
  5. End
  6. End If
  7. SetGraphicsDriver GLMax2DDriver()
  8. Global Fondo:Timage
  9. Global Window:TGadget = CreateWindow("Font Machine Font Preview", 10, 10, 800, 600, Null, WINDOW_TITLEBAR | WINDOW_CENTER | WINDOW_RESIZABLE)
  10. Global CanvPanel:TGadget = CreatePanel(0, 0, window.width - space, window.height, window, PANEL_BORDER)
  11. SetGadgetLayout (CanvPanel, EDGE_ALIGNED, EDGE_ALIGNED, EDGE_ALIGNED, EDGE_ALIGNED)
  12. Global Canvas:TGadget = CreateCanvas(0, 0, window.width - Space, window.height, CanvPanel)
  13. SetGadgetLayout (Canvas, EDGE_ALIGNED, EDGE_ALIGNED, EDGE_ALIGNED, EDGE_ALIGNED)
  14. 'PANEL:
  15. Global Panel:TGadget = createpanel(window.width - Space, 0, Space, window.height, window)
  16. SetGadgetLayout (Panel, EDGE_CENTERED, EDGE_ALIGNED, EDGE_RELATIVE, EDGE_ALIGNED)
  17. 'Panel.SetColor(255, 0, 0)
  18. 'LABEL:
  19. Global Label:TGadget = CreateLabel("Text:", 0, 0, space - 20, 17, panel)
  20. SetGadgetLayout (Label, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  21. 'TEXTFIELD:
  22. Global Text:TGadget = CreateTextField(0, 17, Space - 20, 20, panel)
  23. SetGadgetLayout (Text, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  24. Text.SetText("Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")
  25. 'SIZELABEL:
  26. Global Label2:TGadget = CreateLabel("Size:", 0, text.ypos + 23, space - 20, 17, panel)
  27. SetGadgetLayout (Label2, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  28. 'SIZER:
  29. Global Sizer:TGadget = CreateSlider(0, label2.ypos + 17, space - 20, 17, panel, SLIDER_HORIZONTAL)
  30. SetGadgetLayout (Sizer, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  31. SetSliderRange(Sizer, 5, 350)
  32. Sizer.SetProp(100)
  33. 'HKERNING LABEL:
  34. Global Label3:TGadget = CreateLabel("Horizontal Kerning", 0, Sizer.ypos + 23, space - 20, 17, panel)
  35. SetGadgetLayout (Label3, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  36. 'HKERNING:
  37. Global HKERNING:TGadget = CreateSlider(0, label3.ypos + 17, space - 20, 17, panel, SLIDER_HORIZONTAL)
  38. SetGadgetLayout (HKERNING, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  39. SetSliderRange(HKERNING, 0, 250)
  40. HKERNING.SetProp(50)
  41. 'VKERNING LABEL:
  42. Global Label4:TGadget = CreateLabel("Vertical Kerning", 0, HKERNING.ypos + 23, space - 20, 17, panel)
  43. SetGadgetLayout (Label4, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  44. 'VKERNING:
  45. Global VKERNING:TGadget = CreateSlider(0, label4.ypos + 17, space - 20, 17, panel, SLIDER_HORIZONTAL)
  46. SetGadgetLayout (VKERNING, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  47. SetSliderRange(VKERNING, 0, 250)
  48. VKERNING.SetProp(50)
  49. 'Color
  50. Global ButColor:TGadget = CreateButton("Set back color", 0, VKERNING.ypos + 20, space - 20, 20, panel)
  51. SetGadgetLayout (ButColor, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  52. 'Border:
  53. Global Chkborder:TGadget = CreateButton("Draw border", 0, butcolor.ypos + 20, space - 20, 20, panel, BUTTON_CHECKBOX)
  54. SetGadgetLayout (Chkborder, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  55. 'Chkborder.SetProp(True)
  56. SetButtonState(Chkborder, 1)
  57. 'Shadow:
  58. Global Chkshadow:TGadget = CreateButton("Draw shadow", 0, chkborder.ypos + 20, space - 20, 20, panel, BUTTON_CHECKBOX)
  59. SetGadgetLayout (Chkshadow, EDGE_ALIGNED, EDGE_CENTERED, EDGE_ALIGNED, EDGE_CENTERED)
  60. 'Chkshadow.SetProp(True)
  61. SetButtonState(Chkshadow, 1)
  62. Global BackRed:Int = 255, BackGreen:Int = 255, backblue:Int = -255
  63. SetGraphics(canvas.CanvasGraphics())
  64. AddHook EmitEventHook, MyHook
  65. 'Graphics 400, 300
  66. SetClsColor 255, 255, 255
  67. Cls
  68. Flip
  69. Global fntsmall:TBitmapFont = LoadBitmapFont(My.Resources.TestForn1.Small_fmf)
  70. Global fnt:TBitmapFont = New TBitmapFont
  71. Cls
  72. SetColor 0, 0, 0
  73. Local MSG:String = "Loading the font..."
  74. fntsmall.DrawText(MSG, GadgetWidth(Canvas) / 2 - fntsmall.GetTxtWidth(MSG) / 2, GadgetHeight(Canvas) / 2 - fntsmall.GetFontHeight())
  75. Global Scale:Float = 1
  76. Flip
  77. fnt.SetProgressFunction(Loading)
  78. fnt.UseMask = True
  79. fnt.MaskColorBlue = 255
  80. fnt.MaskColorGreen = 255
  81. fnt.MaskColorRed = 255
  82. 'fnt.SetFaceBlend(EConstBlend.Mask )
  83. fnt.SetDrawBorder (False)
  84. 'DebugStop
  85. fnt.SetDrawshadow (False)
  86. fnt.Load(AppArgs[1])
  87. If fnt.FontLoaded() = False Then
  88. Notify("The font could not be loaded.")
  89. 'debugstop
  90. End
  91. End If
  92. Flip()
  93. Repeat
  94. WaitEvent()
  95. Forever
  96. 'While Not KeyHit(KEY_ESCAPE)
  97. 'Wend
  98. Function MyHook:Object(iId:Int, tData:Object, tContext:Object)
  99. Local Event:TEvent = TEvent(TData)
  100. 'Print event.ToString()
  101. If event = Null Return Null
  102. If (Event.ID = EVENT_GADGETPAINT) Or (Event.ID = EVENT_WINDOWSIZE) Or (Event.ID = EVENT_WINDOWMOVE) Or (Event.ID = Event_AppResume) Then
  103. 'ReDraw the canvas when requested (GadgetPaint) or when the window was moved, sized, resumed..
  104. Canvas.SetArea(0, 0, Window.width, Window.height)
  105. ReDraw()
  106. ElseIf (event.id = EVENT_WINDOWCLOSE)
  107. End
  108. ElseIf (event.id = EVENT_GADGETACTION)
  109. If event.source = Text Then
  110. ReDraw()
  111. ElseIf event.source = Sizer Or event.source = HKERNING Or event.source = VKERNING Then
  112. 'Print event.ToString()
  113. ReDraw()
  114. ElseIf event.source = ButColor Then
  115. RequestColor(BackRed, BackGreen, backblue)
  116. BackRed = RequestedRed()
  117. BackGreen = RequestedGreen()
  118. backblue = RequestedBlue()
  119. ReDraw()
  120. ElseIf event.source = Chkborder Or event.source = Chkshadow Then
  121. ReDraw()
  122. End If
  123. End If
  124. Return TData
  125. End Function
  126. Function ReDraw()
  127. SetGraphics CanvasGraphics (Canvas)
  128. If Fondo = Null Then
  129. Fondo = LoadImage(My.Resources.Images.fondo_png)
  130. End If
  131. SetViewport 0, 0, GadgetWidth(Canvas), GadgetHeight(Canvas)
  132. SetColor 255, 255, 255
  133. If backblue >= 0 Then
  134. SetClsColor BackRed, BackGreen, backblue
  135. Cls
  136. Else
  137. Cls
  138. TileImage(Fondo, 0, 0)
  139. EndIf
  140. fnt.SetDrawBorder(ButtonState(Chkborder) <> 0)
  141. fnt.SetDrawshadow(ButtonState(Chkshadow) <> 0)
  142. fnt.Kerning.SetHKerning(HKERNING.GetProp() - 50)
  143. fnt.Kerning.SetVKerning(VKERNING.GetProp() - 50)
  144. Local Txt:String = Text.GetText()
  145. Local resize:Float = Float(Sizer.GetProp() / 100.0)
  146. SetScale resize, resize
  147. fnt.DrawTextMaxWidth (txt, 10, 10, GadgetWidth(Canvas) - (Space + 20),True)
  148. SetScale 1, 1
  149. Flip
  150. End Function
  151. Function Loading(Percent:Float)
  152. Global lastpercent:Int = MilliSecs()
  153. If MilliSecs() - lastpercent > 200 Then
  154. lastpercent = MilliSecs()
  155. Cls
  156. SetColor 0, 0, 0
  157. Local MSG:String = "Loading the font (" + Int(percent) + "%)..."
  158. Local Width:Float = fntsmall.GetTxtWidth(MSG)
  159. Local X:Float = GadgetWidth(Canvas) / 2 - width / 2
  160. Local Y:Float = GadgetHeight(Canvas) / 2 - fntsmall.GetFontHeight()
  161. fntsmall.DrawText(MSG, X, Y)
  162. SetColor(100, 100, 100)
  163. y:+fntsmall.GetFontHeight()
  164. Const progHeight:Int = 6
  165. DrawRect(x, y, width, progHeight)
  166. SetColor(255, 255, 255)
  167. DrawRect(x + 1, y + 1, width - 2, progHeight - 2)
  168. SetColor (155, 155, 155)
  169. DrawRect(x + 1, y + 1, (percent / 100.0) * (width - 2), progHeight - 2)
  170. Flip
  171. EndIf
  172. End Function