diff options
| author | Skytrias <skytrias@protonmail.com> | 2022-12-24 11:19:12 +0100 |
|---|---|---|
| committer | Skytrias <skytrias@protonmail.com> | 2022-12-24 11:19:12 +0100 |
| commit | 2a94b66f4da048adda1710f2e29450c8767be600 (patch) | |
| tree | f32728805efa87975c506db5c8682d33fcff3c81 | |
| parent | 4ee413aa32373d8fd3d75288a885f671953cd25e (diff) | |
test
| -rw-r--r-- | vendor/fontstash/fontstash.odin | 118 | ||||
| -rw-r--r-- | vendor/nanovg/gl/gl.odin | 10 | ||||
| -rw-r--r-- | vendor/nanovg/nanovg.odin | 175 |
3 files changed, 139 insertions, 164 deletions
diff --git a/vendor/fontstash/fontstash.odin b/vendor/fontstash/fontstash.odin index f527d1e9b..b4bf86d46 100644 --- a/vendor/fontstash/fontstash.odin +++ b/vendor/fontstash/fontstash.odin @@ -816,22 +816,20 @@ __getVerticalAlign :: proc( pixelSize: i16, ) -> (res: f32) { switch ctx.location { - case .TOPLEFT: { - switch av { - case .TOP: res = font.ascender * f32(pixelSize) / 10 - case .MIDDLE: res = (font.ascender + font.descender) / 2 * f32(pixelSize) / 10 - case .BASELINE: res = 0 - case .BOTTOM: res = font.descender * f32(pixelSize) / 10 - } + case .TOPLEFT: + switch av { + case .TOP: res = font.ascender * f32(pixelSize) / 10 + case .MIDDLE: res = (font.ascender + font.descender) / 2 * f32(pixelSize) / 10 + case .BASELINE: res = 0 + case .BOTTOM: res = font.descender * f32(pixelSize) / 10 } - case .BOTTOMLEFT: { - switch av { - case .TOP: res = -font.ascender * f32(pixelSize) / 10 - case .MIDDLE: res = -(font.ascender + font.descender) / 2 * f32(pixelSize) / 10 - case .BASELINE: res = 0 - case .BOTTOM: res = -font.descender * f32(pixelSize) / 10 - } + case .BOTTOMLEFT: + switch av { + case .TOP: res = -font.ascender * f32(pixelSize) / 10 + case .MIDDLE: res = -(font.ascender + font.descender) / 2 * f32(pixelSize) / 10 + case .BASELINE: res = 0 + case .BOTTOM: res = -font.descender * f32(pixelSize) / 10 } } @@ -1005,35 +1003,33 @@ __getQuad :: proc( y1 = f32(glyph.y1 - 1) switch ctx.location { - case .TOPLEFT: { - rx = math.floor(x^ + xoff) - ry = math.floor(y^ + yoff) - - quad.x0 = rx - quad.y0 = ry - quad.x1 = rx + x1 - x0 - quad.y1 = ry + y1 - y0 - - quad.s0 = x0 * ctx.itw - quad.t0 = y0 * ctx.ith - quad.s1 = x1 * ctx.itw - quad.t1 = y1 * ctx.ith - } - - case .BOTTOMLEFT: { - rx = math.floor(x^ + xoff) - ry = math.floor(y^ - yoff) - - quad.x0 = rx - quad.y0 = ry - quad.x1 = rx + x1 - x0 - quad.y1 = ry - y1 + y0 - - quad.s0 = x0 * ctx.itw - quad.t0 = y0 * ctx.ith - quad.s1 = x1 * ctx.itw - quad.t1 = y1 * ctx.ith - } + case .TOPLEFT: + rx = math.floor(x^ + xoff) + ry = math.floor(y^ + yoff) + + quad.x0 = rx + quad.y0 = ry + quad.x1 = rx + x1 - x0 + quad.y1 = ry + y1 - y0 + + quad.s0 = x0 * ctx.itw + quad.t0 = y0 * ctx.ith + quad.s1 = x1 * ctx.itw + quad.t1 = y1 * ctx.ith + + case .BOTTOMLEFT: + rx = math.floor(x^ + xoff) + ry = math.floor(y^ - yoff) + + quad.x0 = rx + quad.y0 = ry + quad.x1 = rx + x1 - x0 + quad.y1 = ry - y1 + y0 + + quad.s0 = x0 * ctx.itw + quad.t0 = y0 * ctx.ith + quad.s1 = x1 * ctx.itw + quad.t1 = y1 * ctx.ith } x^ += f32(int(f32(glyph.xadvance) / 10 + 0.5)) @@ -1056,15 +1052,15 @@ TextIterInit :: proc( x := x y := y switch state.ah { - case .LEFT: {} - case .CENTER: { - width := TextBounds(ctx, text, x, y, nil) - x = math.round(x - width * 0.5) - } - case .RIGHT: { - width := TextBounds(ctx, text, x, y, nil) - x -= width - } + case .LEFT: {} + + case .CENTER: + width := TextBounds(ctx, text, x, y, nil) + x = math.round(x - width * 0.5) + + case .RIGHT: + width := TextBounds(ctx, text, x, y, nil) + x -= width } // align vertically @@ -1184,15 +1180,15 @@ TextBounds :: proc( // horizontal alignment advance := x - start_x switch state.ah { - case .LEFT: {} - case .CENTER: { - minx -= advance * 0.5 - maxx -= advance * 0.5 - } - case .RIGHT: { - minx -= advance - maxx -= advance - } + case .LEFT: {} + + case .CENTER: + minx -= advance * 0.5 + maxx -= advance * 0.5 + + case .RIGHT: + minx -= advance + maxx -= advance } if bounds != nil { diff --git a/vendor/nanovg/gl/gl.odin b/vendor/nanovg/gl/gl.odin index 1f4d8ceb0..72b469ddb 100644 --- a/vendor/nanovg/gl/gl.odin +++ b/vendor/nanovg/gl/gl.odin @@ -1020,11 +1020,11 @@ __renderFlush :: proc(uptr: rawptr) { __blendFuncSeparate(ctx, &call.blendFunc) switch call.type { - case .NONE: {} - case .FILL: __fill(ctx, call) - case .CONVEX_FILL: __convexFill(ctx, call) - case .STROKE: __stroke(ctx, call) - case .TRIANGLES: __triangles(ctx, call) + case .NONE: {} + case .FILL: __fill(ctx, call) + case .CONVEX_FILL: __convexFill(ctx, call) + case .STROKE: __stroke(ctx, call) + case .TRIANGLES: __triangles(ctx, call) } } diff --git a/vendor/nanovg/nanovg.odin b/vendor/nanovg/nanovg.odin index db99ef5a4..8beb08cce 100644 --- a/vendor/nanovg/nanovg.odin +++ b/vendor/nanovg/nanovg.odin @@ -1302,30 +1302,21 @@ __appendCommands :: proc(ctx: ^Context, values: []f32) { cmd := Commands(values[i]) switch cmd { - case .MOVE_TO, .LINE_TO: { - TransformPoint(&values[i + 1], &values[i + 2], state.xform, values[i + 1], values[i + 2]) - i += 3 - } - - case .BEZIER_TO: { - TransformPoint(&values[i + 1], &values[i + 2], state.xform, values[i + 1], values[i + 2]) - TransformPoint(&values[i + 3], &values[i + 4], state.xform, values[i + 3], values[i + 4]) - TransformPoint(&values[i + 5], &values[i + 6], state.xform, values[i + 5], values[i + 6]) - i += 7 - } + case .MOVE_TO, .LINE_TO: + TransformPoint(&values[i + 1], &values[i + 2], state.xform, values[i + 1], values[i + 2]) + i += 3 - case .CLOSE: { - i += 1 - } + case .BEZIER_TO: + TransformPoint(&values[i + 1], &values[i + 2], state.xform, values[i + 1], values[i + 2]) + TransformPoint(&values[i + 3], &values[i + 4], state.xform, values[i + 3], values[i + 4]) + TransformPoint(&values[i + 5], &values[i + 6], state.xform, values[i + 5], values[i + 6]) + i += 7 - case .WINDING: { - i += 2 - } + case .CLOSE: i += 1 + case .WINDING: i += 2 - // default - case: { - i += 1 - } + // default + case: i += 1 } } @@ -1510,45 +1501,38 @@ __flattenPaths :: proc(ctx: ^Context) { cmd := Commands(ctx.commands[i]) switch cmd { - case .MOVE_TO: { - __addPath(ctx) - p := ctx.commands[i + 1:] - __addPoint(ctx, p[0], p[1], { .CORNER }) - i += 3 - } - - case .LINE_TO: { - p := ctx.commands[i + 1:] - __addPoint(ctx, p[0], p[1], { .CORNER }) - i += 3 + case .MOVE_TO: + __addPath(ctx) + p := ctx.commands[i + 1:] + __addPoint(ctx, p[0], p[1], { .CORNER }) + i += 3 + + case .LINE_TO: + p := ctx.commands[i + 1:] + __addPoint(ctx, p[0], p[1], { .CORNER }) + i += 3 + + case .BEZIER_TO: + last := __lastPoint(ctx) + + if last != nil { + cp1 := ctx.commands[i + 1:] + cp2 := ctx.commands[i + 3:] + p := ctx.commands[i + 5:] + __tesselateBezier(ctx, last.x,last.y, cp1[0],cp1[1], cp2[0],cp2[1], p[0],p[1], 0, { .CORNER }) } - case .BEZIER_TO: { - last := __lastPoint(ctx) - - if last != nil { - cp1 := ctx.commands[i + 1:] - cp2 := ctx.commands[i + 3:] - p := ctx.commands[i + 5:] - __tesselateBezier(ctx, last.x,last.y, cp1[0],cp1[1], cp2[0],cp2[1], p[0],p[1], 0, { .CORNER }) - } + i += 7 - i += 7 - } + case .CLOSE: + __closePath(ctx) + i += 1 - case .CLOSE: { - __closePath(ctx) - i += 1 - } - - case .WINDING: { - __pathWinding(ctx, Winding(ctx.commands[i + 1])) - i += 2 - } + case .WINDING: + __pathWinding(ctx, Winding(ctx.commands[i + 1])) + i += 2 - case: { - i += 1 - } + case: i += 1 } } @@ -2520,7 +2504,7 @@ Ellipse :: proc(ctx: ^Context, cx, cy, rx, ry: f32) { __cmdf(.BEZIER_TO), cx+rx*KAPPA, cy+ry, cx+rx, cy+ry*KAPPA, cx+rx, cy, __cmdf(.BEZIER_TO), cx+rx, cy-ry*KAPPA, cx+rx*KAPPA, cy-ry, cx, cy-ry, __cmdf(.BEZIER_TO), cx-rx*KAPPA, cy-ry, cx-rx, cy-ry*KAPPA, cx-rx, cy, - __cmdf(.CLOSE) + __cmdf(.CLOSE), } __appendCommands(ctx, values[:]) } @@ -2674,8 +2658,8 @@ CreateFont :: proc(ctx: ^Context, name, filename: string) -> int { // Creates font by loading it from the specified memory chunk. // Returns handle to the font. -CreateFontMem :: proc(ctx: ^Context, name: string, slice: []byte) -> int { - return fontstash.AddFontMem(&ctx.fs, name, slice) +CreateFontMem :: proc(ctx: ^Context, name: string, slice: []byte, free_loaded_data: bool) -> int { + return fontstash.AddFontMem(&ctx.fs, name, slice, free_loaded_data) } // Finds a loaded font of specified name, and returns handle to it, or -1 if the font is not found. @@ -2890,15 +2874,15 @@ TextIcon :: proc(ctx: ^Context, x, y: f32, codepoint: rune) -> f32 { x := x * scale y := y * scale switch fstate.ah { - case .LEFT: {} - case .CENTER: { - width := fontstash.CodepointWidth(font, codepoint, fscale) - x = math.round(x - width * 0.5) - } - case .RIGHT: { - width := fontstash.CodepointWidth(font, codepoint, fscale) - x -= width - } + case .LEFT: {} + + case .CENTER: + width := fontstash.CodepointWidth(font, codepoint, fscale) + x = math.round(x - width * 0.5) + + case .RIGHT: + width := fontstash.CodepointWidth(font, codepoint, fscale) + x -= width } // align vertically @@ -3190,35 +3174,30 @@ TextBreakLines :: proc( prev_iter = iter switch iter.codepoint { - case '\t', '\v', '\f', ' ', 0x00a0: { - // NBSP - type = .Space - } + case '\t', '\v', '\f', ' ', 0x00a0: + // NBSP + type = .Space - case '\n': { - type = pcodepoint == 13 ? .Space : .Newline - } - - case '\r': { - type = pcodepoint == 10 ? .Space : .Newline - } - - case 0x0085: { - // NEL - type = .Newline - } - - case: { - if (iter.codepoint >= 0x4E00 && iter.codepoint <= 0x9FFF) || - (iter.codepoint >= 0x3000 && iter.codepoint <= 0x30FF) || - (iter.codepoint >= 0xFF00 && iter.codepoint <= 0xFFEF) || - (iter.codepoint >= 0x1100 && iter.codepoint <= 0x11FF) || - (iter.codepoint >= 0x3130 && iter.codepoint <= 0x318F) || - (iter.codepoint >= 0xAC00 && iter.codepoint <= 0xD7AF) { - type = .CJK - } else { - type = .Char - } + case '\n': + type = pcodepoint == 13 ? .Space : .Newline + + case '\r': + type = pcodepoint == 10 ? .Space : .Newline + + case 0x0085: + // NEL + type = .Newline + + case: + if (iter.codepoint >= 0x4E00 && iter.codepoint <= 0x9FFF) || + (iter.codepoint >= 0x3000 && iter.codepoint <= 0x30FF) || + (iter.codepoint >= 0xFF00 && iter.codepoint <= 0xFFEF) || + (iter.codepoint >= 0x1100 && iter.codepoint <= 0x11FF) || + (iter.codepoint >= 0x3130 && iter.codepoint <= 0x318F) || + (iter.codepoint >= 0xAC00 && iter.codepoint <= 0xD7AF) { + type = .CJK + } else { + type = .Char } } @@ -3426,9 +3405,9 @@ TextBoxBounds :: proc( // Horizontal bounds switch halign { - case .LEFT: dx = 0 - case .CENTER: dx = breakRowWidth*0.5 - row.width*0.5 - case .RIGHT: dx = breakRowWidth - row.width + case .LEFT: dx = 0 + case .CENTER: dx = breakRowWidth*0.5 - row.width*0.5 + case .RIGHT: dx = breakRowWidth - row.width } rminx = x + row.minx + dx |