302
302
/*if (mask & PAINT_WINDOW_OCCLUSION_DETECTION_MASK)
305
fragment.setOpacity ((float)fragment.getOpacity () * sopacity);
306
fragment.setBrightness ((float)fragment.getBrightness () *
307
ss->mReflectBrightness);
305
wAttrib.opacity = (float)wAttrib.opacity * sopacity;
306
wAttrib.brightness = (float)wAttrib.brightness *
307
ss->mReflectBrightness;
309
if (window->alpha () || fragment.getOpacity () != OPAQUE)
309
if (window->alpha () || wAttrib.opacity != OPAQUE)
310
310
mask |= PAINT_WINDOW_TRANSLUCENT_MASK;
312
312
wTransform.translate (sx, sy, sz);
327
327
wTransform.translate (-window->x () - (window->width () / 2),
328
328
-window->y () - (window->height () / 2), 0.0f);
331
glLoadMatrixf (wTransform.getMatrix ());
333
gWindow->glDraw (wTransform, fragment, region,
330
gWindow->glDraw (wTransform, wAttrib, region,
334
331
mask | PAINT_WINDOW_TRANSFORMED_MASK);
339
334
if (scaled && ((ss->optionGetOverlayIcon () != ShiftOptions::OverlayIconNone) ||
419
414
iconReg = CompRegion (0, 0, icon->width (), icon->height ());
421
gWindow->geometry ().reset ();
416
gWindow->vertexBuffer ()->begin ();
423
418
matl.push_back (icon->matrix ());
425
420
gWindow->glAddGeometry (matl, iconReg, iconReg);
427
if (gWindow->geometry ().vCount)
422
if (gWindow->vertexBuffer ()->end ())
429
GLFragment::Attrib fragment (sAttrib);
424
GLWindowPaintAttrib wAttrib (sAttrib);
430
425
GLMatrix wTransform (transform);
432
427
if (gWindow->textures ().empty ())
433
428
sAttrib.opacity = gWindow->paintAttrib ().opacity;
435
fragment = GLFragment::Attrib (sAttrib);
430
wAttrib = GLWindowPaintAttrib (sAttrib);
437
fragment.setOpacity ((float)fragment.getOpacity () * sopacity);
438
fragment.setBrightness ((float)fragment.getBrightness () *
439
ss->mReflectBrightness);
432
wAttrib.opacity = (float)wAttrib.opacity * sopacity;
433
wAttrib.brightness = (float)wAttrib.brightness *
434
ss->mReflectBrightness;
441
436
wTransform.translate (sx, sy, sz);
443
438
wTransform.translate (window->x () +
444
439
(window->width () * sscale / 2),
446
(window->height () * sscale / 2.0), 0.0f);
441
(window->height () * sscale / 2.0),
448
444
wTransform.scale (ss->mOutput->width (),
449
-ss->mOutput->height (), 1.0f);
445
-ss->mOutput->height (),
451
448
wTransform.rotate (srot, 0.0, 1.0, 0.0);
453
450
wTransform.scale (1.0f / ss->mOutput->width (),
454
-1.0f / ss->mOutput->height (), 1.0f);
451
-1.0f / ss->mOutput->height (),
456
wTransform.translate (x -
457
(window->width () * sscale / 2), y -
458
(window->height () * sscale / 2.0), 0.0f);
454
wTransform.translate (x - (window->width () * sscale / 2),
455
y - (window->height () * sscale / 2.0),
459
457
wTransform.scale (scale, scale, 1.0f);
462
glLoadMatrixf (wTransform.getMatrix ());
464
gWindow->glDrawTexture (icon, fragment, mask);
459
gWindow->glDrawTexture (icon, wTransform, wAttrib, mask);
1154
1146
sTransform.toScreenSpace (output, -DEFAULT_Z_CAMERA);
1156
GLdouble clip[4] = { 0.0, -1.0, 0.0, 0.0};
1158
clip[3] = ((oy1 + (oy2 - oy1) / 2)) + (maxThumbHeight / 2.0);
1160
1148
/* Reflection drawing */
1162
1150
if (optionGetReflection ())
1164
1152
GLMatrix rTransform = sTransform;
1153
GLMatrix r2Transform;
1154
GLushort colorData[4];
1155
GLfloat vertexData[12];
1165
1156
int cull, cullInv;
1157
GLVertexBuffer *streamingBuffer = GLVertexBuffer::streamingBuffer ();
1166
1159
glGetIntegerv (GL_CULL_FACE_MODE, &cull);
1167
1160
cullInv = (cull == GL_BACK)? GL_FRONT : GL_BACK;
1169
rTransform.translate (0.0, oy1 + oy2 + maxThumbHeight,
1162
rTransform.translate (0.0, oy1 + oy2 + maxThumbHeight, 0.0);
1171
1163
rTransform.scale (1.0, -1.0, 1.0);
1174
glLoadMatrixf (rTransform.getMatrix ());
1176
1165
glCullFace (cullInv);
1178
1167
if (optionGetMipmaps ())
1179
1168
gScreen->setTextureFilter (GL_LINEAR_MIPMAP_LINEAR);
1184
glClipPlane (GL_CLIP_PLANE0, clip);
1185
glEnable (GL_CLIP_PLANE0);
1188
1170
mReflectActive = true;
1189
1171
mReflectBrightness = optionGetIntensity ();
1190
1172
for (i = 0; i < mNSlots; i++)
1203
glDisable (GL_CLIP_PLANE0);
1204
1185
glCullFace (cull);
1207
glTranslatef (0.0, 0.0, -DEFAULT_Z_CAMERA);
1209
1186
glEnable(GL_BLEND);
1210
1187
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
1213
glColor4f (0.0, 0.0, 0.0, 0.0);
1214
glVertex2f (0.5, 0.0);
1215
glVertex2f (-0.5, 0.0);
1216
glColor4f (0.0, 0.0, 0.0,
1217
MIN (1.0, 1.0 - optionGetIntensity ()) * 2.0 *
1219
glVertex2f (-0.5, -0.5);
1220
glVertex2f (0.5, -0.5);
1188
r2Transform.translate (0.0, 0.0, -DEFAULT_Z_CAMERA);
1190
streamingBuffer->begin (GL_TRIANGLE_STRIP);
1196
streamingBuffer->addColors (1, colorData);
1197
streamingBuffer->addColors (1, colorData);
1199
colorData[3] = MIN (1.0,
1200
1.0 - optionGetIntensity ()) * 2.0 * mAnim;
1201
streamingBuffer->addColors (1, colorData);
1202
streamingBuffer->addColors (1, colorData);
1204
vertexData[0] = 0.5;
1207
vertexData[3] = -0.5;
1210
vertexData[6] = 0.5;
1211
vertexData[7] = -0.5;
1213
vertexData[9] = -0.5;
1214
vertexData[10] = -0.5;
1217
streamingBuffer->addVertices (4, vertexData);
1219
streamingBuffer->end ();
1220
streamingBuffer->render (r2Transform);
1223
1222
if (optionGetGroundSize () > 0.0)
1225
unsigned short color[4];
1227
color[0] = optionGetGroundColor1 ()[0];
1228
color[1] = optionGetGroundColor1 ()[1];
1229
color[2] = optionGetGroundColor1 ()[2];
1230
color[3] = (float)optionGetGroundColor1 ()[3] * mAnim;
1231
glColor4usv (color);
1232
glVertex2f (-0.5, -0.5);
1233
glVertex2f (0.5, -0.5);
1234
color[0] = optionGetGroundColor2 ()[0];
1235
color[1] = optionGetGroundColor2 ()[1];
1236
color[2] = optionGetGroundColor2 ()[2];
1237
color[3] = (float)optionGetGroundColor2 ()[3] * mAnim;
1238
glColor4usv (color);
1239
glVertex2f (0.5, -0.5 + optionGetGroundSize ());
1240
glVertex2f (-0.5, -0.5 + optionGetGroundSize ());
1224
streamingBuffer->begin (GL_TRIANGLE_STRIP);
1226
colorData[0] = optionGetGroundColor1 ()[0];
1227
colorData[1] = optionGetGroundColor1 ()[1];
1228
colorData[2] = optionGetGroundColor1 ()[2];
1229
colorData[3] = (float)optionGetGroundColor1 ()[3] * mAnim;
1230
streamingBuffer->addColors (1, colorData);
1231
streamingBuffer->addColors (1, colorData);
1233
colorData[3] = (float)optionGetGroundColor2 ()[3] * mAnim;
1234
streamingBuffer->addColors (1, colorData);
1235
streamingBuffer->addColors (1, colorData);
1237
vertexData[0] = -0.5;
1238
vertexData[1] = -0.5;
1240
vertexData[3] = 0.5;
1241
vertexData[4] = -0.5;
1243
vertexData[6] = -0.5;
1244
vertexData[7] = -0.5 + optionGetGroundSize ();
1246
vertexData[9] = 0.5;
1247
vertexData[10] = -0.5 + optionGetGroundSize ();
1250
streamingBuffer->addVertices (4, vertexData);
1252
streamingBuffer->end ();
1253
streamingBuffer->render (r2Transform);
1244
1256
glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1245
1257
glDisable(GL_BLEND);
1246
glColor4f (1.0, 1.0, 1.0, 1.0);
1250
1260
/* Drawing normal windows */
1253
glLoadMatrixf (sTransform.getMatrix ());
1255
if (optionGetReflection () && mAnim == 1.0)
1257
glClipPlane (GL_CLIP_PLANE0, clip);
1258
glEnable (GL_CLIP_PLANE0);
1261
1262
mReflectBrightness = 1.0;
1262
1263
mReflectActive = false;