palette.odin 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package karl2d_palette
  2. import k2 "../.."
  3. import "core:log"
  4. import "core:fmt"
  5. import "core:reflect"
  6. _ :: fmt
  7. tex: k2.Texture
  8. PAD :: 20
  9. SW :: 50
  10. SH :: 50
  11. MID_WIDTH :: (len(COLOR_BY_NAME) - 1) * SW + PAD*2
  12. init :: proc() {
  13. k2.init(290*2 + MID_WIDTH, (len(COLOR_BY_NAME) - 1)*(SH + PAD*2), "Karl2D Palette Demo")
  14. }
  15. step :: proc() -> bool {
  16. k2.new_frame()
  17. k2.process_events()
  18. k2.clear(k2.WHITE)
  19. k2.draw_rect({0, 0, f32(k2.get_screen_width() / 2), f32(k2.get_screen_height())}, k2.BLACK)
  20. x := f32(290)
  21. y := f32(0)
  22. for c, name in COLOR_BY_NAME {
  23. if name == .BLANK {
  24. continue
  25. }
  26. k2.draw_rect({x, y, MID_WIDTH, SH+PAD*2}, c)
  27. k2.draw_text(reflect.enum_string(name), {x + MID_WIDTH+PAD, y+25}, 40, c)
  28. color_name_width := k2.measure_text(reflect.enum_string(name), 40)
  29. k2.draw_text(reflect.enum_string(name), {290-color_name_width.x-PAD, y+25}, 40, c)
  30. for c2, c2_name in COLOR_BY_NAME {
  31. if c2_name == .BLANK {
  32. continue
  33. }
  34. k2.draw_rect({x + PAD, y + PAD, SW, SH}, c2)
  35. x += SW
  36. }
  37. x = 290
  38. y += SH + PAD*2
  39. }
  40. k2.present()
  41. free_all(context.temp_allocator)
  42. return !k2.shutdown_wanted()
  43. }
  44. shutdown :: proc() {
  45. k2.destroy_texture(tex)
  46. k2.shutdown()
  47. }
  48. main :: proc() {
  49. context.logger = log.create_console_logger()
  50. init()
  51. run := true
  52. for run {
  53. run = step()
  54. }
  55. shutdown()
  56. }
  57. Color_Name :: enum {
  58. BLACK,
  59. WHITE,
  60. BLANK,
  61. GRAY,
  62. DARK_GRAY,
  63. BLUE,
  64. DARK_BLUE,
  65. LIGHT_BLUE,
  66. GREEN,
  67. DARK_GREEN,
  68. LIGHT_GREEN,
  69. ORANGE,
  70. RED,
  71. DARK_RED,
  72. LIGHT_RED,
  73. BROWN,
  74. DARK_BROWN,
  75. LIGHT_BROWN,
  76. PURPLE,
  77. LIGHT_PURPLE,
  78. MAGENTA,
  79. YELLOW,
  80. LIGHT_YELLOW,
  81. }
  82. COLOR_BY_NAME :: [Color_Name]k2.Color {
  83. .BLACK = k2.BLACK,
  84. .WHITE = k2.WHITE,
  85. .BLANK = k2.BLANK,
  86. .GRAY = k2.GRAY,
  87. .DARK_GRAY = k2.DARK_GRAY,
  88. .BLUE = k2.BLUE,
  89. .DARK_BLUE = k2.DARK_BLUE,
  90. .LIGHT_BLUE = k2.LIGHT_BLUE,
  91. .GREEN = k2.GREEN,
  92. .DARK_GREEN = k2.DARK_GREEN,
  93. .LIGHT_GREEN = k2.LIGHT_GREEN,
  94. .ORANGE = k2.ORANGE,
  95. .RED = k2.RED,
  96. .DARK_RED = k2.DARK_RED,
  97. .LIGHT_RED = k2.LIGHT_RED,
  98. .BROWN = k2.BROWN,
  99. .DARK_BROWN = k2.DARK_BROWN,
  100. .LIGHT_BROWN = k2.LIGHT_BROWN,
  101. .PURPLE = k2.PURPLE,
  102. .LIGHT_PURPLE = k2.LIGHT_PURPLE,
  103. .MAGENTA = k2.MAGENTA,
  104. .YELLOW = k2.YELLOW,
  105. .LIGHT_YELLOW = k2.LIGHT_YELLOW,
  106. }