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