fixed line counting bug

master
Allen Webster 2016-09-24 11:26:36 -04:00
parent ac2a3ffb6d
commit fcd6f703b4
2 changed files with 25 additions and 12 deletions

View File

@ -397,7 +397,7 @@ view_compute_cursor(View *view, Buffer_Seek seek){
params.font_height = (f32)font->height; params.font_height = (f32)font->height;
params.adv = font->advance_data; params.adv = font->advance_data;
params.wraps = file->state.wraps; params.wraps = file->state.wraps;
params.virtual_white = 1; params.virtual_white = 0;
Buffer_Cursor_Seek_State state = {0}; Buffer_Cursor_Seek_State state = {0};
Full_Cursor result; Full_Cursor result;
@ -4774,7 +4774,7 @@ draw_file_loaded(View *view, i32_Rect rect, b32 is_active, Render_Target *target
params.wrapped = wrapped; params.wrapped = wrapped;
params.font_height = (f32)line_height; params.font_height = (f32)line_height;
params.adv = advance_data; params.adv = advance_data;
params.virtual_white = 1; params.virtual_white = 0;
Buffer_Render_State state = {0}; Buffer_Render_State state = {0};
Buffer_Layout_Stop stop; Buffer_Layout_Stop stop;

View File

@ -129,6 +129,19 @@ buffer_measure_starts(Buffer_Measure_Starts *state, Buffer_Type *buffer){
return(result); return(result);
} }
#if 0
internal_4tech void
buffer_measure_character_starts(Buffer_Type *buffer, i32 *character_starts, i32 mode, i32 virtual_whitespace){
assert_4tech(mode == 0);
Buffer_Stream_Type stream = {0};
i32 i = 0;
i32 size = buffer_size(buffer);
i32 line_index = 0;
}
#endif
internal_4tech void internal_4tech void
buffer_measure_wrap_y(Buffer_Type *buffer, f32 *wraps, f32 font_height, f32 *adv, f32 max_width){ buffer_measure_wrap_y(Buffer_Type *buffer, f32 *wraps, f32 font_height, f32 *adv, f32 max_width){
Buffer_Stream_Type stream = {0}; Buffer_Stream_Type stream = {0};
@ -136,20 +149,20 @@ buffer_measure_wrap_y(Buffer_Type *buffer, f32 *wraps, f32 font_height, f32 *adv
i32 size = buffer_size(buffer); i32 size = buffer_size(buffer);
i32 wrap_index = 0; i32 wrap_index = 0;
f32 last_wrap = 0.f;
f32 current_wrap = 0.f; f32 current_wrap = 0.f;
f32 x = 0.f; f32 x = 0.f;
wraps[wrap_index++] = current_wrap;
if (buffer_stringify_loop(&stream, buffer, i, size)){ if (buffer_stringify_loop(&stream, buffer, i, size)){
b32 still_looping = 0; b32 still_looping = 0;
do{ do{
for (; i < stream.end; ++i){ for (; i < stream.end; ++i){
u8 ch = (u8)stream.data[i]; u8 ch = (u8)stream.data[i];
if (ch == '\n'){ if (ch == '\n'){
wraps[wrap_index++] = last_wrap;
current_wrap += font_height; current_wrap += font_height;
last_wrap = current_wrap; wraps[wrap_index++] = current_wrap;
x = 0.f; x = 0.f;
} }
else{ else{
@ -167,7 +180,7 @@ buffer_measure_wrap_y(Buffer_Type *buffer, f32 *wraps, f32 font_height, f32 *adv
}while(still_looping); }while(still_looping);
} }
wraps[wrap_index++] = last_wrap; current_wrap += font_height;
wraps[wrap_index++] = current_wrap; wraps[wrap_index++] = current_wrap;
assert_4tech(wrap_index-1 == buffer->line_count); assert_4tech(wrap_index-1 == buffer->line_count);
@ -199,11 +212,11 @@ buffer_remeasure_starts(Buffer_Type *buffer, i32 line_start, i32 line_end, i32 l
i32 new_line_count = line_count; i32 new_line_count = line_count;
i32 new_line_end = line_end; i32 new_line_end = line_end;
if (line_shift != 0){ if (line_shift != 0){
memmove_4tech(starts + line_end + line_shift, starts + line_end,
sizeof(i32)*(line_count - line_end));
new_line_count += line_shift; new_line_count += line_shift;
new_line_end += line_shift; new_line_end += line_shift;
memmove_4tech(starts + line_end + line_shift, starts + line_end,
sizeof(i32)*(line_count - line_end));
} }
// Iteration data (yikes! Need better loop system) // Iteration data (yikes! Need better loop system)
@ -262,11 +275,11 @@ buffer_remeasure_wrap_y(Buffer_Type *buffer, i32 line_start, i32 line_end, i32 l
i32 line_count = new_line_count; i32 line_count = new_line_count;
i32 new_line_end = line_end; i32 new_line_end = line_end;
if (line_shift != 0){ if (line_shift != 0){
memmove_4tech(wraps + line_end + line_shift, wraps + line_end,
sizeof(i32)*(line_count - line_end));
line_count -= line_shift; line_count -= line_shift;
new_line_end += line_shift; new_line_end += line_shift;
memmove_4tech(wraps + line_end + line_shift, wraps + line_end,
sizeof(i32)*(line_count - line_end));
} }
// Iteration data (yikes! Need better loop system) // Iteration data (yikes! Need better loop system)