コード例 #1
0
ファイル: model-iqm.c プロジェクト: mksn/objview
/*
 * Draw the animated bones of the model
 *
 */
void
model_iqm_draw_anim_bones(struct iqm_model *model)
{
    int i;

    glDisable(GL_DEPTH_TEST);

    for (i=0; i<model->skeleton->num_bones; i++)
    {
        struct iqm_bone *b = model->skeleton->bones+i;
        glBegin(GL_LINES);
        if (b->parent >= 0)
        {
            struct iqm_bone *pb = model->skeleton->bones + b->parent;
            glColor3f(0,0.5,0.5);
            glVertex3f(pb->anim_matrix[12],
                       pb->anim_matrix[13],
                       pb->anim_matrix[14]);
        } else {
            glColor3f(0,0.5,1);
            glVertex3f(0,0,0);
        }

        glVertex3f(b->anim_matrix[12],
                   b->anim_matrix[13],
                   b->anim_matrix[14]);

        glEnd();

        glRasterPos3f(b->anim_matrix[12],
                      b->anim_matrix[13],
                      b->anim_matrix[14]);

        _draw_string(GLUT_BITMAP_HELVETICA_10, b->name);
    }

    glEnable(GL_DEPTH_TEST);
}
コード例 #2
0
ファイル: textst_render.c プロジェクト: UIKit0/libbluray
static int _render_line(TEXTST_RENDER *p, TEXTST_BITMAP *bmp,
                        const BD_TEXTST_REGION_STYLE *base_style,
                        BD_TEXTST_REGION_STYLE *style,
                        uint8_t **p_ptr, int *p_elem_count,
                        int xpos, int ypos, int *baseline_pos)
{
    FT_Face  face = NULL;

    /* select font */
    _update_face(p, &face, style);

    while ( (*p_elem_count) > 0) {
        BD_TEXTST_DATA *elem = (BD_TEXTST_DATA*)*p_ptr;
        (*p_ptr) += sizeof(BD_TEXTST_DATA);
        (*p_elem_count)--;

        switch (elem->type) {
            case BD_TEXTST_DATA_STRING:
                xpos = _draw_string(face, elem->data.text.string, elem->data.text.length,
                                    bmp, xpos, ypos, style, baseline_pos);
                (*p_ptr) += elem->data.text.length;
                break;

            case BD_TEXTST_DATA_NEWLINE:
                return xpos;

            case BD_TEXTST_DATA_FONT_ID:
                style->font_id_ref = elem->data.font_id_ref;
                _update_face(p, &face, style);
                break;

            case BD_TEXTST_DATA_FONT_STYLE:
                style->font_style =  elem->data.style.style;
                style->outline_color = elem->data.style.outline_color;
                style->outline_thickness = elem->data.style.outline_thickness;
                if (style->font_style.outline_border) {
                    TEXTST_ERROR("textst_render: unsupported style: outline\n");
                }
                break;

            case BD_TEXTST_DATA_FONT_SIZE:
                style->font_size = elem->data.font_size;
                _update_face(p, &face, style);
                break;

            case BD_TEXTST_DATA_FONT_COLOR:
                style->font_color = elem->data.font_color;
                break;

            case BD_TEXTST_DATA_RESET_STYLE:
                memcpy(style, base_style, sizeof(*style));
                _update_face(p, &face, style);
                break;

            default:
                TEXTST_ERROR("Unknown control code %d\n", elem->type);
                break;
        }
    }

    return xpos;
}