text_editor/transform: use correct vertex type
This commit is contained in:
parent
21701d90aa
commit
487289f3c9
@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <stdint.h>
|
||||
|
||||
constexpr inline int32_t min(int32_t a, int32_t b)
|
||||
{
|
||||
|
@ -36,7 +36,7 @@ cursor_advance render_primary_buffer(ta_parameter_writer& writer,
|
||||
const gap_buffer& gb,
|
||||
const viewport_window& window)
|
||||
{
|
||||
int32_t first_line = min(-1, max(window.first_line, gb.line.length - 1));
|
||||
int32_t first_line = min(window.first_line, gb.line.length - 1);
|
||||
|
||||
cursor_advance cursor = { 0 };
|
||||
int32_t h_advance = 0;
|
||||
@ -45,6 +45,8 @@ cursor_advance render_primary_buffer(ta_parameter_writer& writer,
|
||||
const float r_texture_width = 1.0f / font->texture_width;
|
||||
const float r_texture_height = 1.0f / font->texture_height;
|
||||
|
||||
int row = first_line;
|
||||
|
||||
int32_t init_i = first_line >= 0 ? gb.line.offsets[first_line] + 1 : 0;
|
||||
for (int32_t i = init_i; i <= gb.size; i++) {
|
||||
if (i == gb.gap_start) {
|
||||
@ -83,6 +85,7 @@ cursor_advance render_primary_buffer(ta_parameter_writer& writer,
|
||||
if (c == '\n') {
|
||||
h_advance = 0;
|
||||
v_advance += font->face_metrics.height;
|
||||
row += 1;
|
||||
if (int_26_6(v_advance + font->face_metrics.height) > window.box.y1) {
|
||||
break;
|
||||
}
|
||||
|
@ -119,7 +119,8 @@ void glyph_begin(ta_parameter_writer& writer,
|
||||
| tsp_instruction_word::dst_alpha_instr::inverse_src_alpha
|
||||
| tsp_instruction_word::fog_control::no_fog
|
||||
| tsp_instruction_word::texture_u_size::from_int(texture_width)
|
||||
| tsp_instruction_word::texture_v_size::from_int(texture_height);
|
||||
| tsp_instruction_word::texture_v_size::from_int(texture_height)
|
||||
| tsp_instruction_word::texture_shading_instruction::modulate;
|
||||
|
||||
const uint32_t texture_address = texture_memory_alloc.texture.start;
|
||||
const uint32_t texture_control_word = texture_control_word::pixel_format::_8bpp_palette
|
||||
@ -137,35 +138,36 @@ void glyph_begin(ta_parameter_writer& writer,
|
||||
);
|
||||
}
|
||||
|
||||
static inline void transfer_quad_type_1(ta_parameter_writer& writer,
|
||||
struct vertex va, struct vertex vb, struct vertex vc, struct vertex vd, float z)
|
||||
static inline void transfer_quad_type_3(ta_parameter_writer& writer,
|
||||
struct vertex va, struct vertex vb, struct vertex vc, struct vertex vd, float z,
|
||||
uint32_t base_color)
|
||||
{
|
||||
writer.append<ta_vertex_parameter::polygon_type_1>() =
|
||||
ta_vertex_parameter::polygon_type_1(polygon_vertex_parameter_control_word(false),
|
||||
writer.append<ta_vertex_parameter::polygon_type_3>() =
|
||||
ta_vertex_parameter::polygon_type_3(polygon_vertex_parameter_control_word(false),
|
||||
va.x, va.y, z,
|
||||
va.u, va.v,
|
||||
0, // base_color
|
||||
base_color,
|
||||
0); // offset_color
|
||||
|
||||
writer.append<ta_vertex_parameter::polygon_type_1>() =
|
||||
ta_vertex_parameter::polygon_type_1(polygon_vertex_parameter_control_word(false),
|
||||
writer.append<ta_vertex_parameter::polygon_type_3>() =
|
||||
ta_vertex_parameter::polygon_type_3(polygon_vertex_parameter_control_word(false),
|
||||
vb.x, vb.y, z,
|
||||
vb.u, vb.v,
|
||||
0, // base_color
|
||||
base_color,
|
||||
0); // offset_color
|
||||
|
||||
writer.append<ta_vertex_parameter::polygon_type_1>() =
|
||||
ta_vertex_parameter::polygon_type_1(polygon_vertex_parameter_control_word(false),
|
||||
writer.append<ta_vertex_parameter::polygon_type_3>() =
|
||||
ta_vertex_parameter::polygon_type_3(polygon_vertex_parameter_control_word(false),
|
||||
vd.x, vd.y, z,
|
||||
vd.u, vd.v,
|
||||
0, // base_color
|
||||
base_color,
|
||||
0); // offset_color
|
||||
|
||||
writer.append<ta_vertex_parameter::polygon_type_1>() =
|
||||
ta_vertex_parameter::polygon_type_1(polygon_vertex_parameter_control_word(true),
|
||||
writer.append<ta_vertex_parameter::polygon_type_3>() =
|
||||
ta_vertex_parameter::polygon_type_3(polygon_vertex_parameter_control_word(true),
|
||||
vc.x, vc.y, z,
|
||||
vc.u, vc.v,
|
||||
0, // base_color
|
||||
base_color,
|
||||
0); // offset_color
|
||||
}
|
||||
|
||||
@ -202,5 +204,6 @@ void transform_glyph(ta_parameter_writer& writer,
|
||||
}
|
||||
|
||||
const float z = 0.1f;
|
||||
transfer_quad_type_1(writer, out[0], out[1], out[2], out[3], z);
|
||||
uint32_t base_color = 0xff0080ff;
|
||||
transfer_quad_type_3(writer, out[0], out[1], out[2], out[3], z, base_color);
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ struct viewport_window {
|
||||
|
||||
inline void viewport_init_fullscreen(viewport_window& window)
|
||||
{
|
||||
window.first_line = -1;
|
||||
window.first_line = 0;
|
||||
window.box.x0 = 10;
|
||||
window.box.y0 = 20;
|
||||
window.box.x1 = 640 - 10;
|
||||
|
Loading…
x
Reference in New Issue
Block a user