Karl Zylinski пре 1 месец
родитељ
комит
b0df808699
4 измењених фајлова са 96 додато и 65 уклоњено
  1. 3 3
      examples/minimal/minimal.odin
  2. 9 7
      examples/minimal_web/minimal_web.odin
  3. 74 51
      examples/palette/palette.odin
  4. 10 4
      karl2d.odin

+ 3 - 3
examples/minimal/minimal.odin

@@ -38,12 +38,12 @@ main :: proc() {
 
 		k2.draw_rect({4, 95, 512, 152}, k2.color_alpha(k2.DARK_GRAY, 192))
 		
-		k2.draw_text("Hellöpe!", {10, 100}, 48, k2.WHITE)
+		k2.draw_text("Hellöpe!", {10, 100}, 48, k2.LIGHT_RED)
 
 		msg1 := fmt.tprintf("Time since start: %.3f s", t)
 		msg2 := fmt.tprintf("Last frame time: %.5f s", k2.get_frame_time())
-		k2.draw_text(msg1, {10, 148}, 48, k2.WHITE)
-		k2.draw_text(msg2, {10, 196}, 48, k2.WHITE)
+		k2.draw_text(msg1, {10, 148}, 48, k2.ORANGE)
+		k2.draw_text(msg2, {10, 196}, 48, k2.LIGHT_PURPLE)
 
 		k2.present()
 		free_all(context.temp_allocator)

+ 9 - 7
examples/minimal_web/minimal_web.odin

@@ -32,7 +32,7 @@ init :: proc() {
 step :: proc() -> bool {
 	k2.new_frame()
 	k2.process_events()
-	k2.clear(k2.BLUE)
+	k2.clear(k2.LIGHT_BLUE)
 
 	t := k2.get_time()
 
@@ -41,16 +41,18 @@ step :: proc() -> bool {
 	k2.draw_texture_ex(tex, {0, 0, f32(tex.width), f32(tex.height)}, {pos_x + 400, 450, 900, 500}, {450, 250}, rot)
 
 	k2.draw_rect({10, 10, 60, 60}, k2.GREEN)
-	k2.draw_rect({20, 20, 40, 40}, k2.BLACK)
-	k2.draw_circle({120, 40}, 30, k2.BLACK)
-	k2.draw_circle({120, 40}, 20, k2.GREEN)
+	k2.draw_rect({20, 20, 40, 40}, k2.LIGHT_GREEN)
+	k2.draw_circle({120, 40}, 30, k2.DARK_RED)
+	k2.draw_circle({120, 40}, 20, k2.RED)
+
+	k2.draw_rect({4, 95, 512, 152}, k2.color_alpha(k2.DARK_GRAY, 192))
 	
-	k2.draw_text("Hellöpe!", {10, 100}, 48, k2.WHITE)
+	k2.draw_text("Hellöpe!", {10, 100}, 48, k2.LIGHT_RED)
 
 	msg1 := fmt.tprintf("Time since start: %.3f s", t)
 	msg2 := fmt.tprintf("Last frame time: %.5f s", k2.get_frame_time())
-	k2.draw_text(msg1, {10, 148}, 48, k2.WHITE)
-	k2.draw_text(msg2, {10, 196}, 48, k2.WHITE)
+	k2.draw_text(msg1, {10, 148}, 48, k2.ORANGE)
+	k2.draw_text(msg2, {10, 196}, 48, k2.LIGHT_PURPLE)
 
 	k2.present()
 	free_all(context.temp_allocator)

+ 74 - 51
examples/palette/palette.odin

@@ -3,13 +3,19 @@ package karl2d_palette
 import k2 "../.."
 import "core:log"
 import "core:fmt"
+import "core:reflect"
 
 _ :: fmt
 
 tex: k2.Texture
 
+PAD :: 20
+SW :: 50
+SH :: 50
+MID_WIDTH :: (len(COLOR_BY_NAME) - 1) * SW + PAD*2
+
 init :: proc() {
-	k2.init(1470, 1530, "Karl2D Palette Demo")
+	k2.init(290*2 + MID_WIDTH, (len(COLOR_BY_NAME) - 1)*(SH + PAD*2), "Karl2D Palette Demo")
 }
 
 step :: proc() -> bool {
@@ -18,62 +24,27 @@ step :: proc() -> bool {
 	k2.clear(k2.WHITE)
 	k2.draw_rect({0, 0, f32(k2.get_screen_width() / 2), f32(k2.get_screen_height())}, k2.BLACK)
 
-	colors := [?]k2.Color {
-		k2.BLACK,
-		k2.WHITE,
-		k2.GRAY,
-		k2.DARK_GRAY,
-		k2.BLUE,
-		k2.DARK_BLUE,
-		k2.LIGHT_BLUE,
-		k2.GREEN,
-		k2.DARK_GREEN,
-		k2.LIGHT_GREEN,
-		k2.RED,
-		k2.LIGHT_RED,
-		k2.DARK_RED,
-		k2.LIGHT_PURPLE,
-		k2.YELLOW,
-		k2.LIGHT_YELLOW,
-		k2.MAGENTA,
-	}
-
-	color_names := [?]string {
-		"BLACK",
-		"WHITE",
-		"GRAY",
-		"DARK_GRAY",
-		"BLUE",
-		"DARK_BLUE",
-		"LIGHT_BLUE",
-		"GREEN",
-		"DARK_GREEN",
-		"LIGHT_GREEN",
-		"RED",
-		"LIGHT_RED",
-		"DARK_RED",
-		"LIGHT_PURPLE",
-		"YELLOW",
-		"LIGHT_YELLOW",
-		"MAGENTA",
-	}
-
 	x := f32(290)
 	y := f32(0)
-	PAD :: 20
-	SW :: 50
-	SH :: 50
 
-	for bg, i in colors {
-		k2.draw_rect({x, y, 890, SH+PAD*2}, bg)
+	for c, name in COLOR_BY_NAME {
+		if name == .BLANK {
+			continue
+		}
 
-		k2.draw_text(color_names[i], {x + 890+PAD, y+25}, 40, bg)
+		k2.draw_rect({x, y, MID_WIDTH, SH+PAD*2}, c)
 
-		color_name_width := k2.measure_text(color_names[i], 40)
-		k2.draw_text(color_names[i], {290-color_name_width.x-PAD, y+25}, 40, bg)
+		k2.draw_text(reflect.enum_string(name), {x + MID_WIDTH+PAD, y+25}, 40, c)
 
-		for c in colors {
-			k2.draw_rect({x + PAD, y + PAD, SW, SH}, c)
+		color_name_width := k2.measure_text(reflect.enum_string(name), 40)
+		k2.draw_text(reflect.enum_string(name), {290-color_name_width.x-PAD, y+25}, 40, c)
+
+		for c2, c2_name in COLOR_BY_NAME {
+			if c2_name == .BLANK {
+				continue
+			}
+
+			k2.draw_rect({x + PAD, y + PAD, SW, SH}, c2)
 			x += SW
 		}
 
@@ -103,3 +74,55 @@ main :: proc() {
 
 	shutdown()
 }
+
+Color_Name :: enum {
+	BLACK,
+	WHITE,
+	BLANK,
+	GRAY,
+	DARK_GRAY,
+	BLUE,
+	DARK_BLUE,
+	LIGHT_BLUE,
+	GREEN,
+	DARK_GREEN,
+	LIGHT_GREEN,
+	ORANGE,
+	RED,
+	DARK_RED,
+	LIGHT_RED,
+	BROWN,
+	DARK_BROWN,
+	LIGHT_BROWN,
+	PURPLE,
+	LIGHT_PURPLE,
+	MAGENTA,
+	YELLOW,
+	LIGHT_YELLOW,
+}
+
+COLOR_BY_NAME :: [Color_Name]k2.Color {
+	.BLACK = k2.BLACK,
+	.WHITE = k2.WHITE,
+	.BLANK = k2.BLANK,
+	.GRAY = k2.GRAY,
+	.DARK_GRAY = k2.DARK_GRAY,
+	.BLUE = k2.BLUE,
+	.DARK_BLUE = k2.DARK_BLUE,
+	.LIGHT_BLUE = k2.LIGHT_BLUE,
+	.GREEN = k2.GREEN,
+	.DARK_GREEN = k2.DARK_GREEN,
+	.LIGHT_GREEN = k2.LIGHT_GREEN,
+	.ORANGE = k2.ORANGE,
+	.RED = k2.RED,
+	.DARK_RED = k2.DARK_RED,
+	.LIGHT_RED = k2.LIGHT_RED,
+	.BROWN = k2.BROWN,
+	.DARK_BROWN = k2.DARK_BROWN,
+	.LIGHT_BROWN = k2.LIGHT_BROWN,
+	.PURPLE = k2.PURPLE,
+	.LIGHT_PURPLE = k2.LIGHT_PURPLE,
+	.MAGENTA = k2.MAGENTA,
+	.YELLOW = k2.YELLOW,
+	.LIGHT_YELLOW = k2.LIGHT_YELLOW,
+}

+ 10 - 4
karl2d.odin

@@ -1451,6 +1451,7 @@ Rect :: struct {
 // An RGBA (Red, Green, Blue, Alpha) color. Each channel can have a value between 0 and 255.
 Color :: [4]u8
 
+// See the folder examples/palette for a demo that shows all colors
 BLACK        :: Color { 0, 0, 0, 255 }
 WHITE        :: Color { 255, 255, 255, 255 }
 BLANK        :: Color { 0, 0, 0, 0 }
@@ -1458,17 +1459,22 @@ GRAY         :: Color { 183, 183, 183, 255 }
 DARK_GRAY    :: Color { 66, 66, 66, 255} 
 BLUE         :: Color { 25, 198, 236, 255 }
 DARK_BLUE    :: Color { 7, 47, 88, 255 }
-LIGHT_BLUE   :: Color { 187, 238, 249, 255 }
+LIGHT_BLUE   :: Color { 200, 230, 255, 255 }
 GREEN        :: Color { 16, 130, 11, 255 }
 DARK_GREEN   :: Color { 6, 53, 34, 255}
 LIGHT_GREEN  :: Color { 175, 246, 184, 255 }
+ORANGE       :: Color { 255, 114, 0, 255 }
 RED          :: Color { 239, 53, 53, 255 }
-LIGHT_RED    :: Color { 248, 183, 183, 255 }
 DARK_RED     :: Color { 127, 10, 10, 255 }
+LIGHT_RED    :: Color { 248, 183, 183, 255 }
+BROWN        :: Color { 115, 78, 74, 255 }
+DARK_BROWN   :: Color { 50, 36, 32, 255 }
+LIGHT_BROWN  :: Color { 146, 119, 119, 255 }
+PURPLE       :: Color { 155, 31, 232, 255 }
 LIGHT_PURPLE :: Color { 217, 172, 248, 255 }
-YELLOW       :: Color { 240, 240, 129, 255 }
-LIGHT_YELLOW :: Color { 253, 250, 222, 255 }
 MAGENTA      :: Color { 209, 17, 209, 255 }
+YELLOW       :: Color { 250, 250, 129, 255 }
+LIGHT_YELLOW :: Color { 253, 250, 222, 255 }
 
 // These are from Raylib. They are here so you can easily port a Raylib program to Karl2D.
 RL_LIGHTGRAY  :: Color { 200, 200, 200, 255 }