Exemplo n.º 1
0
bool widget::as_window(cross_platform_window::Handle handle)
{
    if (father())
        return false;

    if (is_window())
        return true;

    if (handle)
    {
        if (takisy::all_windows__.find(handle) == takisy::all_windows__.end())
        {
            cross_platform_window window(handle);

            window.xy(xy() - window.client_offset());
            window.client_size(size());
            window.visible(visible());
            window.repaint();

            takisy::all_windows__[handle] = this;
        }
    }
    else
    {
        handle = takisy::handleFromLPWIDGET(this);
        if (handle)
        {
            takisy::all_windows__.erase(handle);

            cross_platform_window(handle).repaint();
        }
    }

    return true;
}
Exemplo n.º 2
0
bool widget::as_window(bool enable_alpha_channel)
{
    if (father())
        return false;

    if (is_window())
        return true;

    cross_platform_window::Handle handle = nullptr;
#ifdef __os_win__
    DWORD style = WS_POPUP;
    if (visible())
        style |= WS_VISIBLE;

    DWORD exstyle = WS_EX_TOOLWINDOW;
    if (enable_alpha_channel)
        exstyle |= WS_EX_LAYERED;

    handle = CreateWindowEx(exstyle, takisy::class_name__,
                            "takisy::gui::cross_platform_window::winnt::widget",
                            style, x(), y(), width(), height(),
                            GetDesktopWindow(), nullptr,
                            GetModuleHandle(nullptr), nullptr);
#endif

    if (!handle)
        return false;
    else
        return as_window(handle);
}
Exemplo n.º 3
0
static struct dri_drawable *
do_drawable_hash(VADriverContextP ctx, XID drawable)
{
    struct dri_state *dri_state = (struct dri_state *)ctx->drm_state;
    int index = drawable % DRAWABLE_HASH_SZ;
    struct dri_drawable *dri_drawable = dri_state->drawable_hash[index];

    while (dri_drawable) {
        if (dri_drawable->x_drawable == drawable)
            return dri_drawable;
        dri_drawable = dri_drawable->next;
    }

    dri_drawable = dri_state->createDrawable(ctx, drawable);
    dri_drawable->x_drawable = drawable;
    dri_drawable->is_window = is_window(ctx->native_dpy, drawable);
    dri_drawable->next = dri_state->drawable_hash[index];
    dri_state->drawable_hash[index] = dri_drawable;

    return dri_drawable;
}