예제 #1
0
static void spritebutton_render(component *c) {
    spritebutton *sb = widget_get_obj(c);
    sizer *s = component_get_obj(c->parent);
    if(sb->active > 0) {
        video_render_sprite(sb->img, c->x, c->y, BLEND_ALPHA, 0);
    }
    if(sb->text) {
        sb->tconf.opacity = clamp(s->opacity * 255, 0, 255);
        text_render(&sb->tconf, c->x, c->y, c->w, c->h, sb->text);
    }
}
예제 #2
0
파일: xysizer.c 프로젝트: wilkie/openomf
static void xysizer_render(component *c) {
    sizer *s = component_get_obj(c);

    // Just render all children
    iterator it;
    component **tmp;
    vector_iter_begin(&s->objs, &it);
    while((tmp = iter_next(&it)) != NULL) {
        component_render(*tmp);
    }
}
예제 #3
0
파일: xysizer.c 프로젝트: acasaccia/openomf
static int xysizer_event(component *c, SDL_Event *event) {
    sizer *s = component_get_obj(c);

    // Just pass events to all children
    int handled = 0;
    iterator it;
    component **tmp;
    vector_iter_begin(&s->objs, &it);
    while((tmp = iter_next(&it)) != NULL) {
        handled |= component_event(*tmp, event);
    }

    return 1; // Wasn't handled here (event though it might have been)
}
예제 #4
0
파일: xysizer.c 프로젝트: wilkie/openomf
static void xysizer_layout(component *c, int x, int y, int w, int h) {
    sizer *s = component_get_obj(c);

    // Set layout for all components in the sizer
    iterator it;
    component **tmp;
    vector_iter_begin(&s->objs, &it);
    while((tmp = iter_next(&it)) != NULL) {
        // Set component position and size from the component hint
        int m_x = ((*tmp)->x_hint < x) ? x : (*tmp)->x_hint;
        int m_y = ((*tmp)->y_hint < y) ? y : (*tmp)->y_hint;
        int m_w = ((*tmp)->w_hint < 0) ? 0 : (*tmp)->w_hint;
        int m_h = ((*tmp)->h_hint < 0) ? 0 : (*tmp)->h_hint;
        if(m_w == 0 || m_h == 0) {
            DEBUG("Warning: Gui component hidden, because size is 0. Make sure size hints are set!");
        }
        component_layout(*tmp, m_x, m_y, m_w, m_h);
    }
}