imtk
diff src/draw.c @ 19:11da537aeba6
blah
author | John Tsiombikas <nuclear@siggraph.org> |
---|---|
date | Tue, 26 Apr 2011 22:53:21 +0300 |
parents | 737e9047d9c9 |
children |
line diff
1.1 --- a/src/draw.c Mon Apr 25 08:54:05 2011 +0300 1.2 +++ b/src/draw.c Tue Apr 26 22:53:21 2011 +0300 1.3 @@ -116,45 +116,6 @@ 1.4 glEnd(); 1.5 } 1.6 1.7 -void imtk_draw_disc(int x, int y, float rad, int subdiv, float *ctop, float *cbot) 1.8 -{ 1.9 - int i; 1.10 - float t, dtheta, theta = 0.0; 1.11 - float color[4]; 1.12 - float cx = (float)x; 1.13 - float cy = (float)y; 1.14 - 1.15 - subdiv += 3; 1.16 - dtheta = 2.0 * M_PI / subdiv; 1.17 - 1.18 - color[0] = (ctop[0] + cbot[0]) * 0.5; 1.19 - color[1] = (ctop[1] + cbot[1]) * 0.5; 1.20 - color[2] = (ctop[2] + cbot[2]) * 0.5; 1.21 - color[3] = (ctop[3] + cbot[3]) * 0.5; 1.22 - 1.23 - glBegin(GL_TRIANGLE_FAN); 1.24 - glColor4fv(color); 1.25 - glVertex2f(cx, cy); 1.26 - 1.27 - for(i=0; i<=subdiv; i++) { 1.28 - float vx, vy; 1.29 - 1.30 - vx = cx + cos(theta) * rad; 1.31 - vy = cy + sin(theta) * rad; 1.32 - theta += dtheta; 1.33 - 1.34 - t = (vy - (cy - rad)) / (2.0 * rad); 1.35 - color[0] = ctop[0] + (cbot[0] - ctop[0]) * t; 1.36 - color[1] = ctop[1] + (cbot[1] - ctop[1]) * t; 1.37 - color[2] = ctop[2] + (cbot[2] - ctop[2]) * t; 1.38 - color[3] = ctop[3] + (cbot[3] - ctop[3]) * t; 1.39 - 1.40 - glColor4fv(color); 1.41 - glVertex2f(vx, vy); 1.42 - } 1.43 - glEnd(); 1.44 -} 1.45 - 1.46 void imtk_draw_frame(int x, int y, int w, int h, int style) 1.47 { 1.48 float tcol[4], bcol[4]; 1.49 @@ -206,6 +167,93 @@ 1.50 glEnd(); 1.51 } 1.52 1.53 +void imtk_draw_disc(int x, int y, float rad, int subdiv, float *ctop, float *cbot) 1.54 +{ 1.55 + int i; 1.56 + float t, dtheta, theta = 0.0; 1.57 + float color[4]; 1.58 + float cx = (float)x; 1.59 + float cy = (float)y; 1.60 + 1.61 + subdiv += 3; 1.62 + dtheta = 2.0 * M_PI / subdiv; 1.63 + 1.64 + color[0] = (ctop[0] + cbot[0]) * 0.5; 1.65 + color[1] = (ctop[1] + cbot[1]) * 0.5; 1.66 + color[2] = (ctop[2] + cbot[2]) * 0.5; 1.67 + color[3] = (ctop[3] + cbot[3]) * 0.5; 1.68 + 1.69 + glBegin(GL_TRIANGLE_FAN); 1.70 + glColor4fv(color); 1.71 + glVertex2f(cx, cy); 1.72 + 1.73 + for(i=0; i<=subdiv; i++) { 1.74 + float vx, vy; 1.75 + 1.76 + vx = cos(theta); 1.77 + vy = sin(theta); 1.78 + theta += dtheta; 1.79 + 1.80 + t = (vy + 1.0) / 2.0; 1.81 + color[0] = ctop[0] + (cbot[0] - ctop[0]) * t; 1.82 + color[1] = ctop[1] + (cbot[1] - ctop[1]) * t; 1.83 + color[2] = ctop[2] + (cbot[2] - ctop[2]) * t; 1.84 + color[3] = ctop[3] + (cbot[3] - ctop[3]) * t; 1.85 + 1.86 + glColor4fv(color); 1.87 + glVertex2f(cx + vx * rad, cy + vy * rad); 1.88 + } 1.89 + glEnd(); 1.90 +} 1.91 + 1.92 +void imtk_draw_disc_frame(int x, int y, float inner, float outer, int subdiv, int style) 1.93 +{ 1.94 + int i; 1.95 + float t, dtheta, theta = 0.0; 1.96 + float color[4], tcol[4], bcol[4]; 1.97 + float cx = (float)x; 1.98 + float cy = (float)y; 1.99 + 1.100 + switch(style) { 1.101 + case FRAME_INSET: 1.102 + memcpy(tcol, imtk_get_color(IMTK_BEVEL_SHAD_COLOR), sizeof tcol); 1.103 + memcpy(bcol, imtk_get_color(IMTK_BEVEL_LIT_COLOR), sizeof bcol); 1.104 + break; 1.105 + 1.106 + case FRAME_OUTSET: 1.107 + default: 1.108 + memcpy(tcol, imtk_get_color(IMTK_BEVEL_LIT_COLOR), sizeof tcol); 1.109 + memcpy(bcol, imtk_get_color(IMTK_BEVEL_SHAD_COLOR), sizeof bcol); 1.110 + } 1.111 + 1.112 + subdiv += 3; 1.113 + dtheta = 2.0 * M_PI / subdiv; 1.114 + 1.115 + glBegin(GL_QUAD_STRIP); 1.116 + 1.117 + for(i=0; i<=subdiv; i++) { 1.118 + float vx, vy; 1.119 + 1.120 + vx = cos(theta); 1.121 + vy = sin(theta); 1.122 + 1.123 + t = (vy + 1.0) / 2.0; 1.124 + color[0] = tcol[0] + (bcol[0] - tcol[0]) * t; 1.125 + color[1] = tcol[1] + (bcol[1] - tcol[1]) * t; 1.126 + color[2] = tcol[2] + (bcol[2] - tcol[2]) * t; 1.127 + color[3] = tcol[3] + (bcol[3] - tcol[3]) * t; 1.128 + 1.129 + vx = cos(theta - M_PI / 4.0); 1.130 + vy = sin(theta - M_PI / 4.0); 1.131 + theta += dtheta; 1.132 + 1.133 + glColor4fv(color); 1.134 + glVertex2f(cx + vx * inner, cy + vy * inner); 1.135 + glVertex2f(cx + vx * outer, cy + vy * outer); 1.136 + } 1.137 + glEnd(); 1.138 +} 1.139 + 1.140 void imtk_draw_string(int x, int y, const char *str) 1.141 { 1.142 glRasterPos2i(x, y);