diff --git a/nuklear.h b/nuklear.h index 72e1812..e26dece 100644 --- a/nuklear.h +++ b/nuklear.h @@ -940,7 +940,7 @@ NK_API void nk_buffer_init(struct nk_buffer*, const struct nk_allocator*, nk_siz NK_API void nk_buffer_init_fixed(struct nk_buffer*, void *memory, nk_size size); NK_API void nk_buffer_info(struct nk_memory_status*, struct nk_buffer*); NK_API void nk_buffer_push(struct nk_buffer*, enum nk_buffer_allocation_type type, - void *memory, nk_size size, nk_size align); + void *memory, nk_size size, nk_size align); NK_API void nk_buffer_mark(struct nk_buffer*, enum nk_buffer_allocation_type type); NK_API void nk_buffer_reset(struct nk_buffer*, enum nk_buffer_allocation_type type); NK_API void nk_buffer_clear(struct nk_buffer*); @@ -1104,7 +1104,7 @@ NK_API void nk_textedit_redo(struct nk_text_edit*); While the first approach works fine if you don't want to use the optional vertex buffer output it is not enough if you do. To get font handling working - for these cases you have to provide to additional parameter inside the + for these cases you have to provide two additional parameter inside the `nk_user_font`. First a texture atlas handle used to draw text as subimages of a bigger font atlas texture and a callback to query a characters glyph information (offset, size, ...). So it is still possible to provide your own @@ -6945,7 +6945,7 @@ nk_rp_pack_rects(struct nk_rp_context *context, struct nk_rp_rect *rects, int nu } /* sort according to heuristic */ - nk_rp_qsort(rects, (unsigned)num_rects, nk_rect_height_compare); + qsort(rects, (unsigned)num_rects, sizeof(rects[0]), nk_rect_height_compare); for (i=0; i < num_rects; ++i) { struct nk_rp__findresult fr = nk_rp__skyline_pack_rectangle(context, rects[i].w, rects[i].h); @@ -6958,7 +6958,8 @@ nk_rp_pack_rects(struct nk_rp_context *context, struct nk_rp_rect *rects, int nu } /* unsort */ - nk_rp_qsort(rects, (unsigned)num_rects, nk_rect_original_order); + /*nk_rp_qsort(rects, (unsigned)num_rects, nk_rect_original_order);*/ + qsort(rects, (unsigned)num_rects, sizeof(rects[0]), nk_rect_original_order); /* set was_packed flags */ for (i=0; i < num_rects; ++i) @@ -7731,7 +7732,7 @@ NK_INTERN void nk_tt__handle_clipped_edge(float *scanline, int x, struct nk_tt__active_edge *e, float x0, float y0, float x1, float y1) { - if (!(y0>y1) && !(y0sy <= e->ey); if (y0 > e->ey) return; @@ -7745,8 +7746,8 @@ nk_tt__handle_clipped_edge(float *scanline, int x, struct nk_tt__active_edge *e, y1 = e->ey; } - if (!(x0 > x) && !(x0 < x)) NK_ASSERT(x1 <= x+1); - else if (!(x0 > x+1) && !(x0 < x+1)) NK_ASSERT(x1 >= x); + if (x0 == x) NK_ASSERT(x1 <= x+1); + else if (x0 == x+1) NK_ASSERT(x1 >= x); else if (x0 <= x) NK_ASSERT(x1 <= x); else if (x0 >= x+1) NK_ASSERT(x1 >= x+1); else NK_ASSERT(x1 >= x && x1 <= x+1); @@ -7771,7 +7772,7 @@ nk_tt__fill_active_edges_new(float *scanline, float *scanline_fill, int len, /* brute force every pixel */ /* compute intersection points with top & bottom */ NK_ASSERT(e->ey >= y_top); - if (!(e->fdx > 0) && !(e->fdx < 0)) { + if (e->fdx == 0) { float x0 = e->fx; if (x0 < len) { if (x0 >= 0) { @@ -7970,11 +7971,15 @@ nk_tt__rasterize_sorted_edges(struct nk_tt__bitmap *result, struct nk_tt__edge * /* insert all edges that start before the bottom of this scanline */ while (e->y0 <= scan_y_bottom) { - struct nk_tt__active_edge *z = nk_tt__new_active(&hh, e, off_x, scan_y_top); - NK_ASSERT(z->ey >= scan_y_top); - /* insert at front */ - z->next = active; - active = z; + if (e->y0 != e->y1) { + struct nk_tt__active_edge *z = nk_tt__new_active(&hh, e, off_x, scan_y_top); + if (z != 0) { + NK_ASSERT(z->ey >= scan_y_top); + /* insert at front */ + z->next = active; + active = z; + } + } ++e; } @@ -8136,7 +8141,7 @@ nk_tt__rasterize(struct nk_tt__bitmap *result, struct nk_tt__point *pts, for (k=0; k < wcount[i]; j=k++) { int a=k,b=j; /* skip the edge if horizontal */ - if (!(p[j].y > p[k].y) && !(p[j].y < p[k].y)) + if (p[j].y == p[k].y) continue; /* add edge from j to k to the list */ @@ -8345,7 +8350,7 @@ nk_tt_PackBegin(struct nk_tt_pack_context *spc, unsigned char *pixels, spc->pack_info = context; spc->nodes = nodes; spc->padding = padding; - spc->stride_in_bytes = stride_in_bytes != 0 ? stride_in_bytes : pw; + spc->stride_in_bytes = (stride_in_bytes != 0) ? stride_in_bytes : pw; spc->h_oversample = 1; spc->v_oversample = 1; @@ -9479,7 +9484,7 @@ nk_font_config(float pixel_height) cfg.ttf_size = 0; cfg.ttf_data_owned_by_atlas = 0; cfg.size = pixel_height; - cfg.oversample_h = 1; + cfg.oversample_h = 3; cfg.oversample_v = 1; cfg.pixel_snap = 0; cfg.coord_type = NK_COORD_UV; @@ -9741,7 +9746,7 @@ nk_font_atlas_bake(struct nk_font_atlas *atlas, int *width, int *height, #ifdef NK_INCLUDE_DEFAULT_FONT /* no font added so just use default font */ if (!atlas->font_num) - atlas->default_font = nk_font_atlas_add_default(atlas, 14.0f, 0); + atlas->default_font = nk_font_atlas_add_default(atlas, 13.0f, 0); #endif NK_ASSERT(atlas->font_num); if (!atlas->font_num) return 0;