Ejemplo n.º 1
0
LIWdgWidget* liwdg_widget_new (
	LIWdgManager* manager)
{
	LIWdgWidget* self;

	self = lisys_calloc (1, sizeof (LIWdgWidget));
	if (self == NULL)
		return NULL;
	self->manager = manager;
	self->request[1].width = -1;
	self->request[1].height = -1;
	self->request[2].width = -1;
	self->request[2].height = -1;
	self->visible = 1;
	self->cols = NULL;
	self->rows = NULL;
	self->cells = NULL;
	self->width = 0;
	self->height = 0;
	self->col_expand = 0;
	self->row_expand = 0;
	self->col_spacing = LIWDG_DEFAULT_SPACING;
	self->row_spacing = LIWDG_DEFAULT_SPACING;
	self->margin_left = 0;
	self->margin_right = 0;
	self->margin_top = 0;
	self->margin_bottom = 0;

	/* Allocate the overlay. */
	self->overlay = liren_render_overlay_new (manager->render);
	liren_render_overlay_set_visible (manager->render, self->overlay, self->visible);

	/* Add to dictionary. */
	if (!lialg_ptrdic_insert (manager->widgets.all, self, self))
	{
		lisys_free (self);
		return NULL;
	}

	private_rebuild (self, PRIVATE_REBUILD_REQUEST);

	return self;
}
/**
 * \brief Creates a rendering framebuffer.
 * \param render Renderer.
 * \param width Framebuffer width.
 * \param height Framebuffer height.
 * \param samples Number of multisamples.
 * \param hdr Nonzero to use floating point framebuffer to enable HDR.
 * \return New deferred framebuffer or NULL.
 */
LIRenFramebuffer32* liren_framebuffer32_new (
    LIRenRender32* render,
    int            width,
    int            height,
    int            samples,
    int            hdr)
{
    LIRenFramebuffer32* self;

    /* Allocate self. */
    self = lisys_calloc (1, sizeof (LIRenFramebuffer32));
    if (self == NULL)
        return NULL;
    self->render = render;
    self->width = width;
    self->height = height;

    /* Create frame buffer object. */
    for ( ; samples > 0 ; samples--)
    {
        if (!liren_framebuffer32_resize (self, width, height, samples, hdr))
            lisys_error_report ();
        else
            break;
    }
    if (samples == 0)
    {
        liren_framebuffer32_free (self);
        return NULL;
    }

    /* Add to dictionary. */
    if (!lialg_ptrdic_insert (render->framebuffers, self, self))
    {
        liren_framebuffer32_free (self);
        return NULL;
    }

    return self;
}