void fdrawXORcirc(float xofs, float yofs, float rad) { set_inverted_drawing(1); glPushMatrix(); glTranslatef(xofs, yofs, 0.0); glutil_draw_lined_arc(0.0, M_PI * 2.0, rad, 20); glPopMatrix(); set_inverted_drawing(0); }
void fdrawXORellipse(float xofs, float yofs, float hw, float hh) { if (hw == 0) return; set_inverted_drawing(1); glPushMatrix(); glTranslatef(xofs, yofs, 0.0f); glScalef(1.0f, hh / hw, 1.0f); glutil_draw_lined_arc(0.0, M_PI * 2.0, hw, 20); glPopMatrix(); set_inverted_drawing(0); }
static void wm_gesture_draw_circle(wmGesture *gt) { rcti *rect = (rcti *)gt->customdata; glTranslatef((float)rect->xmin, (float)rect->ymin, 0.0f); glEnable(GL_BLEND); glColor4f(1.0, 1.0, 1.0, 0.05); glutil_draw_filled_arc(0.0, M_PI * 2.0, rect->xmax, 40); glDisable(GL_BLEND); glEnable(GL_LINE_STIPPLE); glColor3ub(96, 96, 96); glLineStipple(1, 0xAAAA); glutil_draw_lined_arc(0.0, M_PI * 2.0, rect->xmax, 40); glColor3ub(255, 255, 255); glLineStipple(1, 0x5555); glutil_draw_lined_arc(0.0, M_PI * 2.0, rect->xmax, 40); glDisable(GL_LINE_STIPPLE); glTranslatef(-rect->xmin, -rect->ymin, 0.0f); }
/* Helper callback for drawing the cursor itself */ static void screencast_draw_cursor(bContext *UNUSED(C), int x, int y, void *UNUSED(p_ptr)) { glPushMatrix(); glTranslatef((float)x, (float)y, 0.0f); glEnable(GL_LINE_SMOOTH); glEnable(GL_BLEND); glColor4ub(0, 0, 0, 32); glutil_draw_filled_arc(0.0, M_PI * 2.0, 20, 40); glColor4ub(255, 255, 255, 128); glutil_draw_lined_arc(0.0, M_PI * 2.0, 20, 40); glDisable(GL_BLEND); glDisable(GL_LINE_SMOOTH); glPopMatrix(); }
void ui_draw_but_NORMAL(uiBut *but, uiWidgetColors *wcol, rcti *rect) { static GLuint displist = 0; int a, old[8]; GLfloat diff[4], diffn[4] = {1.0f, 1.0f, 1.0f, 1.0f}; float vec0[4] = {0.0f, 0.0f, 0.0f, 0.0f}; float dir[4], size; /* store stuff */ glGetMaterialfv(GL_FRONT, GL_DIFFUSE, diff); /* backdrop */ glColor3ubv((unsigned char *)wcol->inner); uiSetRoundBox(UI_CNR_ALL); uiDrawBox(GL_POLYGON, rect->xmin, rect->ymin, rect->xmax, rect->ymax, 5.0f); /* sphere color */ glMaterialfv(GL_FRONT, GL_DIFFUSE, diffn); glCullFace(GL_BACK); glEnable(GL_CULL_FACE); /* disable blender light */ for (a = 0; a < 8; a++) { old[a] = glIsEnabled(GL_LIGHT0 + a); glDisable(GL_LIGHT0 + a); } /* own light */ glEnable(GL_LIGHT7); glEnable(GL_LIGHTING); ui_get_but_vectorf(but, dir); dir[3] = 0.0f; /* glLightfv needs 4 args, 0.0 is sun */ glLightfv(GL_LIGHT7, GL_POSITION, dir); glLightfv(GL_LIGHT7, GL_DIFFUSE, diffn); glLightfv(GL_LIGHT7, GL_SPECULAR, vec0); glLightf(GL_LIGHT7, GL_CONSTANT_ATTENUATION, 1.0f); glLightf(GL_LIGHT7, GL_LINEAR_ATTENUATION, 0.0f); /* transform to button */ glPushMatrix(); glTranslatef(rect->xmin + 0.5f * BLI_rcti_size_x(rect), rect->ymin + 0.5f * BLI_rcti_size_y(rect), 0.0f); if (BLI_rcti_size_x(rect) < BLI_rcti_size_y(rect)) size = BLI_rcti_size_x(rect) / 200.f; else size = BLI_rcti_size_y(rect) / 200.f; glScalef(size, size, size); if (displist == 0) { GLUquadricObj *qobj; displist = glGenLists(1); glNewList(displist, GL_COMPILE); qobj = gluNewQuadric(); gluQuadricDrawStyle(qobj, GLU_FILL); glShadeModel(GL_SMOOTH); gluSphere(qobj, 100.0, 32, 24); glShadeModel(GL_FLAT); gluDeleteQuadric(qobj); glEndList(); } glCallList(displist); /* restore */ glDisable(GL_LIGHTING); glDisable(GL_CULL_FACE); glMaterialfv(GL_FRONT, GL_DIFFUSE, diff); glDisable(GL_LIGHT7); /* AA circle */ glEnable(GL_BLEND); glEnable(GL_LINE_SMOOTH); glColor3ubv((unsigned char *)wcol->inner); glutil_draw_lined_arc(0.0f, M_PI * 2.0, 100.0f, 32); glDisable(GL_BLEND); glDisable(GL_LINE_SMOOTH); /* matrix after circle */ glPopMatrix(); /* enable blender light */ for (a = 0; a < 8; a++) { if (old[a]) glEnable(GL_LIGHT0 + a); } }