Blame src-nuklear/nuklear_image.c

Ivan Mahonin b53a5c
#include "nuklear.h"
Ivan Mahonin b53a5c
#include "nuklear_internal.h"
Ivan Mahonin b53a5c
Ivan Mahonin b53a5c
/* ===============================================================
Ivan Mahonin b53a5c
 *
Ivan Mahonin b53a5c
 *                          IMAGE
Ivan Mahonin b53a5c
 *
Ivan Mahonin b53a5c
 * ===============================================================*/
Ivan Mahonin b53a5c
NK_API nk_handle
Ivan Mahonin b53a5c
nk_handle_ptr(void *ptr)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    nk_handle handle = {0};
Ivan Mahonin b53a5c
    handle.ptr = ptr;
Ivan Mahonin b53a5c
    return handle;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API nk_handle
Ivan Mahonin b53a5c
nk_handle_id(int id)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    nk_handle handle;
Ivan Mahonin b53a5c
    nk_zero_struct(handle);
Ivan Mahonin b53a5c
    handle.id = id;
Ivan Mahonin b53a5c
    return handle;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_image
Ivan Mahonin b53a5c
nk_subimage_ptr(void *ptr, nk_ushort w, nk_ushort h, struct nk_rect r)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_image s;
Ivan Mahonin b53a5c
    nk_zero(&s, sizeof(s));
Ivan Mahonin b53a5c
    s.handle.ptr = ptr;
Ivan Mahonin b53a5c
    s.w = w; s.h = h;
Ivan Mahonin b53a5c
    s.region[0] = (nk_ushort)r.x;
Ivan Mahonin b53a5c
    s.region[1] = (nk_ushort)r.y;
Ivan Mahonin b53a5c
    s.region[2] = (nk_ushort)r.w;
Ivan Mahonin b53a5c
    s.region[3] = (nk_ushort)r.h;
Ivan Mahonin b53a5c
    return s;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_image
Ivan Mahonin b53a5c
nk_subimage_id(int id, nk_ushort w, nk_ushort h, struct nk_rect r)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_image s;
Ivan Mahonin b53a5c
    nk_zero(&s, sizeof(s));
Ivan Mahonin b53a5c
    s.handle.id = id;
Ivan Mahonin b53a5c
    s.w = w; s.h = h;
Ivan Mahonin b53a5c
    s.region[0] = (nk_ushort)r.x;
Ivan Mahonin b53a5c
    s.region[1] = (nk_ushort)r.y;
Ivan Mahonin b53a5c
    s.region[2] = (nk_ushort)r.w;
Ivan Mahonin b53a5c
    s.region[3] = (nk_ushort)r.h;
Ivan Mahonin b53a5c
    return s;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_image
Ivan Mahonin b53a5c
nk_subimage_handle(nk_handle handle, nk_ushort w, nk_ushort h, struct nk_rect r)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_image s;
Ivan Mahonin b53a5c
    nk_zero(&s, sizeof(s));
Ivan Mahonin b53a5c
    s.handle = handle;
Ivan Mahonin b53a5c
    s.w = w; s.h = h;
Ivan Mahonin b53a5c
    s.region[0] = (nk_ushort)r.x;
Ivan Mahonin b53a5c
    s.region[1] = (nk_ushort)r.y;
Ivan Mahonin b53a5c
    s.region[2] = (nk_ushort)r.w;
Ivan Mahonin b53a5c
    s.region[3] = (nk_ushort)r.h;
Ivan Mahonin b53a5c
    return s;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_image
Ivan Mahonin b53a5c
nk_image_handle(nk_handle handle)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_image s;
Ivan Mahonin b53a5c
    nk_zero(&s, sizeof(s));
Ivan Mahonin b53a5c
    s.handle = handle;
Ivan Mahonin b53a5c
    s.w = 0; s.h = 0;
Ivan Mahonin b53a5c
    s.region[0] = 0;
Ivan Mahonin b53a5c
    s.region[1] = 0;
Ivan Mahonin b53a5c
    s.region[2] = 0;
Ivan Mahonin b53a5c
    s.region[3] = 0;
Ivan Mahonin b53a5c
    return s;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_image
Ivan Mahonin b53a5c
nk_image_ptr(void *ptr)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_image s;
Ivan Mahonin b53a5c
    nk_zero(&s, sizeof(s));
Ivan Mahonin b53a5c
    NK_ASSERT(ptr);
Ivan Mahonin b53a5c
    s.handle.ptr = ptr;
Ivan Mahonin b53a5c
    s.w = 0; s.h = 0;
Ivan Mahonin b53a5c
    s.region[0] = 0;
Ivan Mahonin b53a5c
    s.region[1] = 0;
Ivan Mahonin b53a5c
    s.region[2] = 0;
Ivan Mahonin b53a5c
    s.region[3] = 0;
Ivan Mahonin b53a5c
    return s;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API struct nk_image
Ivan Mahonin b53a5c
nk_image_id(int id)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_image s;
Ivan Mahonin b53a5c
    nk_zero(&s, sizeof(s));
Ivan Mahonin b53a5c
    s.handle.id = id;
Ivan Mahonin b53a5c
    s.w = 0; s.h = 0;
Ivan Mahonin b53a5c
    s.region[0] = 0;
Ivan Mahonin b53a5c
    s.region[1] = 0;
Ivan Mahonin b53a5c
    s.region[2] = 0;
Ivan Mahonin b53a5c
    s.region[3] = 0;
Ivan Mahonin b53a5c
    return s;
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API nk_bool
Ivan Mahonin b53a5c
nk_image_is_subimage(const struct nk_image* img)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    NK_ASSERT(img);
Ivan Mahonin b53a5c
    return !(img->w == 0 && img->h == 0);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_image(struct nk_context *ctx, struct nk_image img)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_window *win;
Ivan Mahonin b53a5c
    struct nk_rect bounds;
Ivan Mahonin b53a5c
Ivan Mahonin b53a5c
    NK_ASSERT(ctx);
Ivan Mahonin b53a5c
    NK_ASSERT(ctx->current);
Ivan Mahonin b53a5c
    NK_ASSERT(ctx->current->layout);
Ivan Mahonin b53a5c
    if (!ctx || !ctx->current || !ctx->current->layout) return;
Ivan Mahonin b53a5c
Ivan Mahonin b53a5c
    win = ctx->current;
Ivan Mahonin b53a5c
    if (!nk_widget(&bounds, ctx)) return;
Ivan Mahonin b53a5c
    nk_draw_image(&win->buffer, bounds, &img, nk_white);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c
NK_API void
Ivan Mahonin b53a5c
nk_image_color(struct nk_context *ctx, struct nk_image img, struct nk_color col)
Ivan Mahonin b53a5c
{
Ivan Mahonin b53a5c
    struct nk_window *win;
Ivan Mahonin b53a5c
    struct nk_rect bounds;
Ivan Mahonin b53a5c
Ivan Mahonin b53a5c
    NK_ASSERT(ctx);
Ivan Mahonin b53a5c
    NK_ASSERT(ctx->current);
Ivan Mahonin b53a5c
    NK_ASSERT(ctx->current->layout);
Ivan Mahonin b53a5c
    if (!ctx || !ctx->current || !ctx->current->layout) return;
Ivan Mahonin b53a5c
Ivan Mahonin b53a5c
    win = ctx->current;
Ivan Mahonin b53a5c
    if (!nk_widget(&bounds, ctx)) return;
Ivan Mahonin b53a5c
    nk_draw_image(&win->buffer, bounds, &img, col);
Ivan Mahonin b53a5c
}
Ivan Mahonin b53a5c