diff --git a/examples/example.jl b/examples/example.jl index ec30a44..6cb7e5b 100644 --- a/examples/example.jl +++ b/examples/example.jl @@ -129,12 +129,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.UP_IN_LEFT_IN, + SI.UP1_LEFT1, padding, SD.get_height(font), SD.get_width(font) * SI.get_num_printable_characters(text), image, - SI.UP_IN_LEFT_IN, + SI.UP1_LEFT1, -1, text, font, @@ -150,12 +150,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.DOWN_OUT_LEFT_IN, + SI.DOWN2_LEFT1, padding, SD.get_height(font), SD.get_width(font) * 12, image, - SI.UP_IN_LEFT_IN, + SI.UP1_LEFT1, -1, "Button", font, @@ -172,7 +172,7 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.RIGHT_OUT, + SI.RIGHT2, padding, SD.get_height(font), 240, @@ -197,12 +197,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.DOWN_OUT_LEFT_IN, + SI.DOWN2_LEFT1, padding, SD.get_height(font), SD.get_width(font) * 12, image, - SI.UP_IN_LEFT_IN, + SI.UP1_LEFT1, -1, "Slider", font, @@ -220,7 +220,7 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.RIGHT_OUT, + SI.RIGHT2, padding, SD.get_height(font), 240, @@ -243,12 +243,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.DOWN_OUT_LEFT_IN, + SI.DOWN2_LEFT1, padding, SD.get_height(font), SD.get_width(font) * 12, image, - SI.UP_IN_LEFT_IN, + SI.UP1_LEFT1, -1, "TextBox", font, @@ -267,12 +267,12 @@ function start() user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], user_input_state.characters, layout, - SI.RIGHT_OUT, + SI.RIGHT2, padding, SD.get_height(font), 240, image, - SI.LEFT_IN, + SI.LEFT1, -1, font, SI.ContextualColor(0x00b0b0b0, 0x00b7b7b7, 0x00bfbfbf), @@ -298,12 +298,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.DOWN_OUT_LEFT_IN, + SI.DOWN2_LEFT1, padding, SD.get_height(font), SD.get_width(font) * 12, image, - SI.UP_IN_LEFT_IN, + SI.UP1_LEFT1, -1, "RadioButton", font, @@ -327,12 +327,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.RIGHT_OUT, + SI.RIGHT2, padding, SD.get_height(font), SD.get_width(font) * (max_num_chars + 2), image, - SI.LEFT_IN, + SI.LEFT1, -1, item, font, @@ -354,12 +354,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.DOWN_OUT_LEFT_IN, + SI.DOWN2_LEFT1, padding, SD.get_height(font), SD.get_width(font) * 12, image, - SI.UP_IN_LEFT_IN, + SI.UP1_LEFT1, -1, "DropDown", font, @@ -382,12 +382,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.RIGHT_OUT, + SI.RIGHT2, padding, SD.get_height(font), SD.get_width(font) * (max_num_chars + 2), image, - SI.LEFT_IN, + SI.LEFT1, -1, drop_down_item_list[drop_down_selected_item], font, @@ -408,12 +408,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.DOWN_OUT_LEFT_IN, + SI.DOWN2_LEFT1, padding, SD.get_height(font), SD.get_width(font) * (max_num_chars + 2), image, - SI.LEFT_IN, + SI.LEFT1, -1, item, font, @@ -436,12 +436,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.DOWN_OUT_LEFT_IN, + SI.DOWN2_LEFT1, padding, SD.get_height(font), SD.get_width(font) * 12, image, - SI.UP_IN_LEFT_IN, + SI.UP1_LEFT1, -1, "CheckBox", font, @@ -460,12 +460,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.RIGHT_OUT, + SI.RIGHT2, padding, SD.get_height(font), SD.get_width(font) * (SI.get_num_printable_characters(text) + 2), image, - SI.LEFT_IN, + SI.LEFT1, -1, text, font, @@ -485,12 +485,12 @@ function start() user_input_state.cursor, user_input_state.mouse_buttons[Int(GLFW.MOUSE_BUTTON_LEFT) + 1], layout, - SI.DOWN_OUT_LEFT_IN, + SI.DOWN2_LEFT1, padding, SD.get_height(font), SD.get_width(font) * SI.get_num_printable_characters(text), image, - SI.UP_IN_LEFT_IN, + SI.UP1_LEFT1, -1, text, font, diff --git a/src/drawing.jl b/src/drawing.jl index 03a25d6..e4cd253 100644 --- a/src/drawing.jl +++ b/src/drawing.jl @@ -160,7 +160,7 @@ end function draw_widget_unclipped!(image, widget_type::TextBox, bounding_box, user_interaction_state, this_widget, text, alignment, padding, font, background_color, border_color, text_color) if get_num_printable_characters(text) * SD.get_width(font) > bounding_box.width - alignment = RIGHT_IN + alignment = RIGHT1 end draw_text_line_in_a_box!( diff --git a/src/layout.jl b/src/layout.jl index 9b22f69..d2ac002 100644 --- a/src/layout.jl +++ b/src/layout.jl @@ -13,69 +13,132 @@ end """ @enum Alignment begin - UP_OUT_LEFT_OUT - UP_IN_LEFT_OUT - LEFT_OUT - DOWN_IN_LEFT_OUT - DOWN_OUT_LEFT_OUT - - UP_OUT_LEFT_IN - UP_IN_LEFT_IN - LEFT_IN - DOWN_IN_LEFT_IN - DOWN_OUT_LEFT_IN - - UP_OUT - UP_IN + UP2_LEFT2 + UP1_LEFT2 + LEFT2 + DOWN1_LEFT2 + DOWN2_LEFT2 + + UP2_LEFT1 + UP1_LEFT1 + LEFT1 + DOWN1_LEFT1 + DOWN2_LEFT1 + + UP2 + UP1 CENTER - DOWN_IN - DOWN_OUT - - UP_OUT_RIGHT_IN - UP_IN_RIGHT_IN - RIGHT_IN - DOWN_IN_RIGHT_IN - DOWN_OUT_RIGHT_IN - - UP_OUT_RIGHT_OUT - UP_IN_RIGHT_OUT - RIGHT_OUT - DOWN_IN_RIGHT_OUT - DOWN_OUT_RIGHT_OUT + DOWN1 + DOWN2 + + UP2_RIGHT1 + UP1_RIGHT1 + RIGHT1 + DOWN1_RIGHT1 + DOWN2_RIGHT1 + + UP2_RIGHT2 + UP1_RIGHT2 + RIGHT2 + DOWN1_RIGHT2 + DOWN2_RIGHT2 end Enumerate 25 different spatial locations with respect to a reference bounding box (rectangle). Used for specifying where further widgets and content are placed with respect to the reference bounding box. + +Think of the 25 regions arranged in a 5 x 5 grid (see example). The names of the regions correspond to positions relative to the center region. For example, `DOWN2_LEFT1` corresponds to the region that is 2 hops below and 1 hop to the left of the center region. It corresponds to the rectangle whose top left point is at (30, 5) in the example below. + +# Examples +```julia-repl +julia> import SimpleDraw + +julia> image_height = 32; image_width = 64; + +julia> image = falses(image_height, image_width); color = true; + +julia> total_height = 22; total_width = 33; content_height = 3; content_width = 6; padding = 2; + +julia> function draw_alignment_combinations!(image, color, total_height, total_width, padding, content_height, content_width) + reference_bounding_box = SimpleDraw.Rectangle(SimpleDraw.Point(content_height + padding + one(padding), content_width + padding + one(padding)), total_height, total_width) + SimpleDraw.draw!(image, reference_bounding_box, color) + + for alignment in instances(SimpleIMGUI.Alignment) + content_bounding_box = SimpleIMGUI.get_alignment_bounding_box(reference_bounding_box, alignment, padding, content_height, content_width) + SimpleDraw.draw!(image, content_bounding_box, color) + end + + return nothing + end +draw_alignment_combinations! (generic function with 1 method) + +julia> draw_alignment_combinations!(image, color, total_height, total_width, padding, content_height, content_width) + +julia> SimpleDraw.visualize(image) + 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 + 1████████████░░▒▒████████████░░▒▒░░▒▒░░▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒░░████████████▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ + 2██░░▒▒░░▒▒██▒▒░░██░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░▒▒░░██░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ + 3████████████░░▒▒████████████░░▒▒░░▒▒░░▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒░░████████████▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ + 4▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ + 5░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ + 6████████████▒▒░░██████████████████████████████████████████████████████████████████░░▒▒████████████░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ + 7██▒▒░░▒▒░░██░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░██░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ + 8████████████▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒████████████░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ + 9░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░████████████▒▒░░▒▒░░████████████▒▒░░▒▒░░▒▒████████████░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +10▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒░░██░░▒▒░░▒▒██▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +11░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░████████████▒▒░░▒▒░░████████████▒▒░░▒▒░░▒▒████████████░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +12▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +13░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +14▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +15████████████░░▒▒██▒▒░░████████████▒▒░░▒▒░░████████████▒▒░░▒▒░░▒▒████████████░░▒▒██▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +16██░░▒▒░░▒▒██▒▒░░██░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒░░██░░▒▒░░▒▒██▒▒░░██░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +17████████████░░▒▒██▒▒░░████████████▒▒░░▒▒░░████████████▒▒░░▒▒░░▒▒████████████░░▒▒██▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +18▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +19░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +20▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +21░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +22▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒████████████░░▒▒░░▒▒████████████░░▒▒░░▒▒░░████████████▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +23░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░██░░▒▒░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒██▒▒░░▒▒░░▒▒██▒▒░░▒▒░░██░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +24▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒████████████░░▒▒░░▒▒████████████░░▒▒░░▒▒░░████████████▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +25████████████░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒██▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +26██░░▒▒░░▒▒██▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +27████████████░░▒▒██████████████████████████████████████████████████████████████████▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +28▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +29░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +30████████████▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒████████████░░▒▒░░▒▒░░▒▒░░▒▒████████████░░▒▒████████████░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +31██▒▒░░▒▒░░██░░▒▒██▒▒░░▒▒░░██░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░██░░▒▒░░▒▒██▒▒░░██░░▒▒░░▒▒██▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒ +32████████████▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒████████████░░▒▒░░▒▒░░▒▒░░▒▒████████████░░▒▒████████████░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ +``` """ @enum Alignment begin - UP_OUT_LEFT_OUT - UP_IN_LEFT_OUT - LEFT_OUT - DOWN_IN_LEFT_OUT - DOWN_OUT_LEFT_OUT - - UP_OUT_LEFT_IN - UP_IN_LEFT_IN - LEFT_IN - DOWN_IN_LEFT_IN - DOWN_OUT_LEFT_IN - - UP_OUT - UP_IN + UP2_LEFT2 + UP1_LEFT2 + LEFT2 + DOWN1_LEFT2 + DOWN2_LEFT2 + + UP2_LEFT1 + UP1_LEFT1 + LEFT1 + DOWN1_LEFT1 + DOWN2_LEFT1 + + UP2 + UP1 CENTER - DOWN_IN - DOWN_OUT - - UP_OUT_RIGHT_IN - UP_IN_RIGHT_IN - RIGHT_IN - DOWN_IN_RIGHT_IN - DOWN_OUT_RIGHT_IN - - UP_OUT_RIGHT_OUT - UP_IN_RIGHT_OUT - RIGHT_OUT - DOWN_IN_RIGHT_OUT - DOWN_OUT_RIGHT_OUT + DOWN1 + DOWN2 + + UP2_RIGHT1 + UP1_RIGHT1 + RIGHT1 + DOWN1_RIGHT1 + DOWN2_RIGHT1 + + UP2_RIGHT2 + UP1_RIGHT2 + RIGHT2 + DOWN1_RIGHT2 + DOWN2_RIGHT2 end """ @@ -89,14 +152,14 @@ See also [`get_alignment_bounding_box`](@ref). ```julia-repl julia> total_height = 21; total_width = 32; content_height = 3; content_width = 6; padding = 2; -julia> alignment = SimpleIMGUI.UP_OUT_LEFT_OUT -UP_OUT_LEFT_OUT::Alignment = 0 +julia> alignment = SimpleIMGUI.UP2_LEFT2 +UP2_LEFT2::Alignment = 0 julia> SimpleIMGUI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) (-5, -8) -julia> alignment = SimpleIMGUI.UP_IN -UP_OUT_LEFT_OUT::Alignment = 11 +julia> alignment = SimpleIMGUI.UP1 +UP2_LEFT2::Alignment = 11 julia> SimpleIMGUI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) (3, 13) @@ -108,57 +171,57 @@ function get_alignment_offset(total_height, total_width, alignment, padding, con end function get_alignment_offset(total_height::I, total_width::I, alignment, padding::I, content_height::I, content_width::I) where {I} - if alignment == UP_OUT_LEFT_OUT + if alignment == UP2_LEFT2 return (-content_height - padding, -content_width - padding) - elseif alignment == UP_IN_LEFT_OUT + elseif alignment == UP1_LEFT2 return (zero(I), -content_width - padding) - elseif alignment == LEFT_OUT + elseif alignment == LEFT2 return ((total_height - content_height) ÷ convert(I, 2), -content_width - padding) - elseif alignment == DOWN_IN_LEFT_OUT + elseif alignment == DOWN1_LEFT2 return (total_height - content_height, -content_width - padding) - elseif alignment == DOWN_OUT_LEFT_OUT + elseif alignment == DOWN2_LEFT2 return (total_height + padding, -content_width - padding) - elseif alignment == UP_OUT_LEFT_IN + elseif alignment == UP2_LEFT1 return (-content_height - padding, zero(I)) - elseif alignment == UP_IN_LEFT_IN + elseif alignment == UP1_LEFT1 return (padding + one(I), padding + one(I)) - elseif alignment == LEFT_IN + elseif alignment == LEFT1 return ((total_height - content_height) ÷ convert(I, 2), padding + one(I)) - elseif alignment == DOWN_IN_LEFT_IN + elseif alignment == DOWN1_LEFT1 return (total_height - content_height - padding - one(I), padding + one(I)) - elseif alignment == DOWN_OUT_LEFT_IN + elseif alignment == DOWN2_LEFT1 return (total_height + padding, zero(I)) - elseif alignment == UP_OUT + elseif alignment == UP2 return (-content_height - padding, (total_width - content_width) ÷ convert(I, 2)) - elseif alignment == UP_IN + elseif alignment == UP1 return (padding + one(I), (total_width - content_width) ÷ convert(I, 2)) elseif alignment == CENTER return ((total_height - content_height) ÷ convert(I, 2), (total_width - content_width) ÷ convert(I, 2)) - elseif alignment == DOWN_IN + elseif alignment == DOWN1 return (total_height - content_height - padding - one(I), (total_width - content_width) ÷ convert(I, 2)) - elseif alignment == DOWN_OUT + elseif alignment == DOWN2 return (total_height + padding, (total_width - content_width) ÷ convert(I, 2)) - elseif alignment == UP_OUT_RIGHT_IN + elseif alignment == UP2_RIGHT1 return (-content_height - padding, total_width - content_width) - elseif alignment == UP_IN_RIGHT_IN + elseif alignment == UP1_RIGHT1 return (padding + one(I), total_width - content_width - padding - one(I)) - elseif alignment == RIGHT_IN + elseif alignment == RIGHT1 return ((total_height - content_height) ÷ convert(I, 2), total_width - content_width - padding - one(I)) - elseif alignment == DOWN_IN_RIGHT_IN + elseif alignment == DOWN1_RIGHT1 return (total_height - content_height - padding - one(I), total_width - content_width - padding - one(I)) - elseif alignment == DOWN_OUT_RIGHT_IN + elseif alignment == DOWN2_RIGHT1 return (total_height + padding, total_width - content_width) - elseif alignment == UP_OUT_RIGHT_OUT + elseif alignment == UP2_RIGHT2 return (-content_height - padding, total_width + padding) - elseif alignment == UP_IN_RIGHT_OUT + elseif alignment == UP1_RIGHT2 return (zero(I), total_width + padding) - elseif alignment == RIGHT_OUT + elseif alignment == RIGHT2 return ((total_height - content_height) ÷ convert(I, 2), total_width + padding) - elseif alignment == DOWN_IN_RIGHT_OUT + elseif alignment == DOWN1_RIGHT2 return (total_height - content_height, total_width + padding) else return (total_height + padding, total_width + padding) @@ -195,14 +258,14 @@ julia> import SimpleDraw julia> bounding_box = SimpleDraw.Rectangle(SimpleDraw.Point(6, 9), 21, 32); height = 3; width = 6; padding = 2; -julia> alignment = SimpleIMGUI.UP_OUT_LEFT_OUT -UP_OUT_LEFT_OUT::Alignment = 0 +julia> alignment = SimpleIMGUI.UP2_LEFT2 +UP2_LEFT2::Alignment = 0 julia> SimpleIMGUI.get_alignment_bounding_box(bounding_box, alignment, padding, height, width) SimpleDraw.Rectangle{Int64}(SimpleDraw.Point{Int64}(1, 1), 3, 6) -julia> alignment = SimpleIMGUI.UP_IN -UP_OUT_LEFT_OUT::Alignment = 11 +julia> alignment = SimpleIMGUI.UP1 +UP2_LEFT2::Alignment = 11 julia> SimpleIMGUI.get_alignment_bounding_box(bounding_box, alignment, padding, height, width) SimpleDraw.Rectangle{Int64}(SimpleDraw.Point{Int64}(9, 22), 3, 6) diff --git a/test/runtests.jl b/test/runtests.jl index b027d48..d385039 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -141,59 +141,59 @@ Test.@testset "SimpleIMGUI.jl" begin 32▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ =# - alignment = SI.UP_OUT_LEFT_OUT + alignment = SI.UP2_LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, -8) - alignment = SI.UP_IN_LEFT_OUT + alignment = SI.UP1_LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (0, -8) - alignment = SI.LEFT_OUT + alignment = SI.LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, -8) - alignment = SI.DOWN_IN_LEFT_OUT + alignment = SI.DOWN1_LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (18, -8) - alignment = SI.DOWN_OUT_LEFT_OUT + alignment = SI.DOWN2_LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (23, -8) - alignment = SI.UP_OUT_LEFT_IN + alignment = SI.UP2_LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, 0) - alignment = SI.UP_IN_LEFT_IN + alignment = SI.UP1_LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (3, 3) - alignment = SI.LEFT_IN + alignment = SI.LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, 3) - alignment = SI.DOWN_IN_LEFT_IN + alignment = SI.DOWN1_LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (15, 3) - alignment = SI.DOWN_OUT_LEFT_IN + alignment = SI.DOWN2_LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (23, 0) - alignment = SI.UP_OUT + alignment = SI.UP2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, 13) - alignment = SI.UP_IN + alignment = SI.UP1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (3, 13) alignment = SI.CENTER Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, 13) - alignment = SI.DOWN_IN + alignment = SI.DOWN1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (15, 13) - alignment = SI.DOWN_OUT + alignment = SI.DOWN2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (23, 13) - alignment = SI.UP_OUT_RIGHT_IN + alignment = SI.UP2_RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, 26) - alignment = SI.UP_IN_RIGHT_IN + alignment = SI.UP1_RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (3, 23) - alignment = SI.RIGHT_IN + alignment = SI.RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, 23) - alignment = SI.DOWN_IN_RIGHT_IN + alignment = SI.DOWN1_RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (15, 23) - alignment = SI.DOWN_OUT_RIGHT_IN + alignment = SI.DOWN2_RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (23, 26) - alignment = SI.UP_OUT_RIGHT_OUT + alignment = SI.UP2_RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, 34) - alignment = SI.UP_IN_RIGHT_OUT + alignment = SI.UP1_RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (0, 34) - alignment = SI.RIGHT_OUT + alignment = SI.RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, 34) - alignment = SI.DOWN_IN_RIGHT_OUT + alignment = SI.DOWN1_RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (18, 34) - alignment = SI.DOWN_OUT_RIGHT_OUT + alignment = SI.DOWN2_RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (23, 34) @@ -281,59 +281,59 @@ Test.@testset "SimpleIMGUI.jl" begin 32████████████▒▒░░████████████▒▒░░▒▒░░▒▒░░▒▒████████████░░▒▒░░▒▒░░▒▒░░▒▒████████████░░▒▒████████████░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░▒▒░░ =# - alignment = SI.UP_OUT_LEFT_OUT + alignment = SI.UP2_LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, -8) - alignment = SI.UP_IN_LEFT_OUT + alignment = SI.UP1_LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (0, -8) - alignment = SI.LEFT_OUT + alignment = SI.LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, -8) - alignment = SI.DOWN_IN_LEFT_OUT + alignment = SI.DOWN1_LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (19, -8) - alignment = SI.DOWN_OUT_LEFT_OUT + alignment = SI.DOWN2_LEFT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (24, -8) - alignment = SI.UP_OUT_LEFT_IN + alignment = SI.UP2_LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, 0) - alignment = SI.UP_IN_LEFT_IN + alignment = SI.UP1_LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (3, 3) - alignment = SI.LEFT_IN + alignment = SI.LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, 3) - alignment = SI.DOWN_IN_LEFT_IN + alignment = SI.DOWN1_LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (16, 3) - alignment = SI.DOWN_OUT_LEFT_IN + alignment = SI.DOWN2_LEFT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (24, 0) - alignment = SI.UP_OUT + alignment = SI.UP2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, 13) - alignment = SI.UP_IN + alignment = SI.UP1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (3, 13) alignment = SI.CENTER Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, 13) - alignment = SI.DOWN_IN + alignment = SI.DOWN1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (16, 13) - alignment = SI.DOWN_OUT + alignment = SI.DOWN2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (24, 13) - alignment = SI.UP_OUT_RIGHT_IN + alignment = SI.UP2_RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, 27) - alignment = SI.UP_IN_RIGHT_IN + alignment = SI.UP1_RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (3, 24) - alignment = SI.RIGHT_IN + alignment = SI.RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, 24) - alignment = SI.DOWN_IN_RIGHT_IN + alignment = SI.DOWN1_RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (16, 24) - alignment = SI.DOWN_OUT_RIGHT_IN + alignment = SI.DOWN2_RIGHT1 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (24, 27) - alignment = SI.UP_OUT_RIGHT_OUT + alignment = SI.UP2_RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (-5, 35) - alignment = SI.UP_IN_RIGHT_OUT + alignment = SI.UP1_RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (0, 35) - alignment = SI.RIGHT_OUT + alignment = SI.RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (9, 35) - alignment = SI.DOWN_IN_RIGHT_OUT + alignment = SI.DOWN1_RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (19, 35) - alignment = SI.DOWN_OUT_RIGHT_OUT + alignment = SI.DOWN2_RIGHT2 Test.@test SI.get_alignment_offset(total_height, total_width, alignment, padding, content_height, content_width) == (24, 35) end