Ooops
January 26, 2021, 05:52:34 AM

Author Topic: [bmx] Core2D Graphics Module by Chroma [ 1+ years ago ]  (Read 515 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bmx] Core2D Graphics Module by Chroma [ 1+ years ago ]
« on: June 29, 2017, 12:28:38 AM »
Title : Core2D Graphics Module
Author : Chroma
Posted : 1+ years ago

Description : First module released for the Core2D Framework.

Let's you run a 4:3 resolution on a widescreen monitor and puts pillars on the sides or where ever needed.

The goal is to have the entire framework cross-platform.  If any Mac users could test this out, that would be great.

UPDATED: 15 Dec - put in SetViewport to ensure the viewport gets set to the correct resolution.


Code :
Code: BlitzMax
  1. ' Core2D Graphics Module
  2.  
  3. ' Official Release 1.00
  4.  
  5. Strict
  6.  
  7. 'Module Core2D.Graphics
  8.  
  9. Private
  10.  
  11. Global _width,_height,_depth,_hertz
  12. Global _xOrigin#,_yOrigin#
  13. Global _box1:TBox
  14. Global _box2:TBox
  15.  
  16. Public
  17.  
  18. Function c2dGraphics( width,height,depth=0,hertz=60 )
  19.  
  20.         _width = width
  21.         _height = height
  22.         _depth = depth
  23.         _hertz = hertz
  24.  
  25.         Select _depth
  26.                 Case 0
  27.                         Graphics _width,_height,_depth,_hertz
  28.  
  29.                 Case 16,24,32
  30.                        
  31.                         Local deskRatio# = Float DesktopWidth() / DesktopHeight()
  32.                         Local gameRatio# = Float _width / _height
  33.                         Local scale#
  34.                         Local virtWidth#,virtHeight#
  35.  
  36.                         Select True
  37.                        
  38.                                 Case gameRatio < deskRatio              'Wide Screen
  39.                                         scale           = Float DesktopHeight() / _height
  40.                                         virtWidth       = Float DesktopWidth() / scale
  41.                                         virtHeight      = _height
  42.                                         _xOrigin        = (virtWidth - _width) / 2.0
  43.                                         _yOrigin        = 0
  44.                                         _box1           = TBox.Create(-_xOrigin,0,_xOrigin,_height)
  45.                                         _box2           = TBox.Create(_width,0,_xOrigin,_height)
  46.                                
  47.                                 Case gameRatio > deskRatio              'Tall Screen
  48.                                         scale           = Float DesktopWidth() / _width
  49.                                         virtWidth       = _width
  50.                                         virtHeight      = Float DesktopHeight() / scale
  51.                                         _xOrigin        = 0
  52.                                         _yOrigin        = (virtHeight - _height) / 2.0
  53.                                         _box1           = TBox.Create(0,-_yOrigin,_width,_yOrigin)
  54.                                         _box2           = TBox.Create(0,_height,_width,_yOrigin)
  55.                                
  56.                                 Default                                 '4:3 Screen
  57.                                         virtWidth       = _width
  58.                                         virtHeight      = _height
  59.                                         _xOrigin        = 0
  60.                                         _yOrigin        = 0
  61.  
  62.                         End Select
  63.                        
  64.                         Graphics DesktopWidth(),DesktopHeight(),DesktopDepth(),DesktopHertz()          
  65.                         SetVirtualResolution virtWidth,virtHeight
  66.                         SetViewport 0,0,virtWidth,virtHeight
  67.                         SetOrigin _xOrigin,_yOrigin
  68.                
  69.                 Default
  70.                         RuntimeError( "Invalid Graphics Mode." )
  71.         End Select
  72.  
  73. End Function
  74.  
  75. Function c2dFlip( sync=-1 )
  76.         SetColor 0,0,0
  77.         SetTransform(0,1,1)
  78.         If _box1 DrawRect(_box1.x,_box1.y,_box1.w,_box1.h)
  79.         If _box2 DrawRect(_box2.x,_box2.y,_box2.w,_box2.h)
  80.         SetColor 255,255,255
  81.         Flip sync
  82. End Function
  83.  
  84. Function c2dGraphicsWidth()
  85.         Return _width
  86. End Function
  87.  
  88. Function c2dGraphicsHeight()
  89.         Return _height
  90. End Function
  91.  
  92. Function c2dMouseX()
  93.         Return VirtualMouseX() - _xOrigin
  94. End Function
  95.  
  96. Function c2dMouseY()
  97.         Return VirtualMouseY() - _yOrigin
  98. End Function
  99.  
  100. Type TBox
  101.         Field x#,y#,w#,h#
  102.         Function Create:TBox(x#,y#,w#,h#)
  103.                 Local box:TBox = New TBox
  104.                 box.x = x
  105.                 box.y = y
  106.                 box.w = w
  107.                 box.h = h
  108.                 Return box
  109.         End Function
  110. End Type


Comments :


Chroma(Posted 1+ years ago)

 Here's a little test snippet:
Code: [Select]
Import "Core2D_Graphics.bmx"

c2dGraphics 1024,768,32

While Not KeyHit(KEY_ESCAPE)
Cls
DrawText "Mouse: " + c2dMouseX() + "," + c2dMouseY(),10,10
c2dFlip
Wend


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal