environment.nim 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # author: Ethosa
  2. import
  3. core/color,
  4. core/enums
  5. {.used.}
  6. type
  7. EnvironmentObj* = object
  8. color*: ColorRef ## background environment color.
  9. screen_mode*: ScreenMode
  10. delay*: int ## window delay.
  11. EnvironmentRef* = ref EnvironmentObj
  12. proc newEnvironment*(color: ColorRef): EnvironmentRef =
  13. ## Creates a new EnvironmentRef object.
  14. ##
  15. ## Arguments:
  16. ## - `color`: ColorRef object for background environment color.
  17. ## - `brightness` - window brightness with value in range `0..1`
  18. EnvironmentRef(color: color, delay: 17,screen_mode: SCREEN_MODE_NONE)
  19. proc newEnvironment*(): EnvironmentRef {.inline.} =
  20. ## Creates a new EnvironmentRef object.
  21. newEnvironment(Color(0x313131ff))
  22. proc setBackgroundColor*(env: EnvironmentRef, color: ColorRef) =
  23. ## Changes background environment color.
  24. ##
  25. ## Arguments:
  26. ## - `color`: ColorRef object.
  27. env.color = color
  28. proc setBackgroundColor*(env: EnvironmentRef, color: uint32) =
  29. ## Changes background environment color.
  30. ##
  31. ## Arguments:
  32. ## - `color`: uint32 color, e.g.: 0xFF64FF
  33. env.color = Color(color)
  34. proc setDelay*(env: EnvironmentRef, delay: int) =
  35. ## Changes window delay.
  36. ##
  37. ## Arguments:
  38. ## - `delay`: should be ``1000 div FPS``, e.g.: ``1000 div 60 for 60`` frames per second.
  39. env.delay = delay
  40. proc setScreenMode*(env: EnvironmentRef, mode: ScreenMode) =
  41. ## Changes screen mode.
  42. ## `mode` should be `SCREEN_MODE_NONE` or `SCREEN_MODE_EXPANDED`.
  43. env.screen_mode = mode