Browse Source

add Environment setting test.

SakiKawasaki 5 years ago
parent
commit
3f91beb986
6 changed files with 49 additions and 8 deletions
  1. 1 1
      README.md
  2. 15 6
      src/nodesnim/environment.nim
  3. 14 0
      src/nodesnim/nodescontrol/button.nim
  4. 1 1
      src/nodesnim/window.nim
  5. 1 0
      tests/README.md
  6. 17 0
      tests/test11.nim

+ 1 - 1
README.md

@@ -1,5 +1,5 @@
 <h1 align="center">Nodesnim</h1>
-<div align="center">The Nim GUI/2D framework using OpenGL.
+<div align="center">The Nim GUI/2D framework using OpenGL and SDL2.
 
 [![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.png?v=103)](https://github.com/ellerbrock/open-source-badges/)
 [![Nim language-plastic](https://github.com/Ethosa/yukiko/blob/master/nim-lang.svg)](https://github.com/Ethosa/yukiko/blob/master/nim-lang.svg)

+ 15 - 6
src/nodesnim/environment.nim

@@ -7,36 +7,45 @@ type
   EnvironmentObj* = object
     delay*: uint32    ## window delay.
     color*: ColorRef  ## background environment color.
+    brightness*: float
   EnvironmentRef* = ref EnvironmentObj
 
 
-proc newEnvironment*(color: ColorRef): EnvironmentRef =
+proc newEnvironment*(color: ColorRef, brightness: float): EnvironmentRef =
   ## Creates a new EnvironmentRef object.
   ##
   ## Arguments:
   ## - `color`: ColorRef object for background environment color.
-  EnvironmentRef(color: color, delay: 17)
+  ## - `brightness` - window brightness with value in range `0..1`
+  EnvironmentRef(color: color, delay: 17, brightness: brightness)
 
 proc newEnvironment*(): EnvironmentRef {.inline.} =
   ## Creates a new EnvironmentRef object.
-  newEnvironment(Color(0x313131ff))
+  newEnvironment(Color(0x313131ff), 1.0)
 
 
-proc setBackgroundColor*(env: EnvironmentRef, color: ColorRef): void =
+proc setBackgroundColor*(env: EnvironmentRef, color: ColorRef) =
   ## Changes background environment color.
   ##
   ## Arguments:
   ## - `color`: ColorRef object.
   env.color = color
 
-proc setBackgroundColor*(env: EnvironmentRef, color: uint32): void =
+proc setBackgroundColor*(env: EnvironmentRef, color: uint32) =
   ## Changes background environment color.
   ##
   ## Arguments:
   ## - `color`: uint32 color, e.g.: 0xFF64FF
   env.color = Color(color)
 
-proc setDelay*(env: EnvironmentRef, delay: uint32): void =
+proc setBrightness*(env: EnvironmentRef, brightness: float) =
+  ## Changes window brightness.
+  ##
+  ## Arguments:
+  ## - `brightness` - window brightness with value in range `0..1`
+  env.brightness = brightness
+
+proc setDelay*(env: EnvironmentRef, delay: uint32) =
   ## Changes window delay.
   ##
   ## Arguments:

+ 14 - 0
src/nodesnim/nodescontrol/button.nim

@@ -24,6 +24,10 @@ type
     hover_background_color*: ColorRef
     press_background_color*: ColorRef
 
+    normal_color*: ColorRef
+    hover_color*: ColorRef
+    press_color*: ColorRef
+
     on_click*: proc(x, y: float): void
   ButtonPtr* = ptr ButtonObj
 
@@ -39,6 +43,9 @@ proc Button*(name: string, variable: var ButtonObj): ButtonPtr =
   variable.spacing = 2
   variable.text_align = Anchor(0.5, 0.5, 0.5, 0.5)
   variable.color = Color(1f, 1f, 1f)
+  variable.normal_color = Color(1f, 1f, 1f)
+  variable.hover_color = Color(1f, 1f, 1f)
+  variable.press_color = Color(1f, 1f, 1f)
   variable.button_mask = BUTTON_LEFT
   variable.action_mask = BUTTON_RELEASE
   variable.normal_background_color = Color(0x444444ff)
@@ -61,6 +68,13 @@ method draw*(self: ButtonPtr, w, h: GLfloat) =
         self.hover_background_color
       else:
         self.normal_background_color
+  self.color =
+    if self.pressed:
+      self.press_color
+    elif self.hovered:
+      self.hover_color
+    else:
+      self.normal_color
   glColor4f(color.r, color.g, color.b, color.a)
   glRectf(x, y, x + self.rect_size.x, y - self.rect_size.y)
   procCall self.LabelPtr.draw(w, h)

+ 1 - 1
src/nodesnim/window.nim

@@ -36,7 +36,7 @@ var mouse_on: NodePtr = nil
 proc display {.cdecl.} =
   ## Displays window.
   let (r, g, b, a) = env.color.toFloatTuple()
-  glClearColor(r, g, b, a)
+  glClearColor(r*env.brightness, g*env.brightness, b*env.brightness, a*env.brightness)
   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)
   glEnable(GL_BLEND)
   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

+ 1 - 0
tests/README.md

@@ -10,3 +10,4 @@
 8. [Use TextureRect node.](https://github.com/Ethosa/nodesnim/blob/master/tests/test8.nim)
 9. [Use Label node.](https://github.com/Ethosa/nodesnim/blob/master/tests/test9.nim)
 10. [Use Button node.](https://github.com/Ethosa/nodesnim/blob/master/tests/test10.nim)
+11. [Environment setting.](https://github.com/Ethosa/nodesnim/blob/master/tests/test11.nim)

+ 17 - 0
tests/test11.nim

@@ -0,0 +1,17 @@
+# --- Test 11. Environment setting. --- #
+import nodesnim
+
+
+Window("hello world")
+
+var
+  mainobj: SceneObj
+  main = Scene("Main", mainobj)
+
+env.color = Color(1, 0.6, 1)  # window background color.
+env.brightness = 0.5
+
+
+addScene(main)
+setMainScene("Main")
+windowLaunch()