static Bool groupPaintWindow (CompWindow * w, const WindowPaintAttrib * attrib, Region region, unsigned int mask) { Bool status; GROUP_WINDOW (w); GROUP_SCREEN (w->screen); UNWRAP (gs, w->screen, paintWindow); status = (*w->screen->paintWindow) (w, attrib, region, mask); WRAP (gs, w->screen, paintWindow, groupPaintWindow); if (status && gw->inGroup) { glPushMatrix (); glDisableClientState (GL_TEXTURE_COORD_ARRAY); glEnable (GL_BLEND); if (gs->glowTexture) { glBindTexture (GL_TEXTURE_2D, gs->glowTexture); glEnable (GL_TEXTURE_2D); } glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glBlendFunc (GL_SRC_ALPHA, GL_ONE); glColor4usv (gs->opt[GROUP_SCREEN_OPTION_LINE_COLOR].value.c); float nearness = 5.0f; float width = 16.0f; float height = 16.0f; float i; int x1, x2, y1, y2; srand(time(0)); for (i = 0.0f - (width / nearness); i < WIN_WIDTH (w) - width; i += width / nearness) { int natural = rand() % 2; x1 = WIN_X (w) + i; y1 = WIN_Y (w) - (width / nearness) + natural; x2 = x1 + width; y2 = y1 + height; glBegin (GL_QUADS); glTexCoord2d (0.0, 1.0); glVertex2i (x1, y1); glTexCoord2d (0.0, 0.0); glVertex2i (x1, y2); glTexCoord2d (1.0, 0.0); glVertex2i (x2, y2); glTexCoord2d (1.0, 1.0); glVertex2i (x2, y1); glEnd (); } srand(time(0)); for (i = 0.0f - (width / nearness); i < WIN_WIDTH (w) - width; i += width / nearness) { int natural = rand() % 2; x1 = WIN_X (w) + i; y1 = WIN_Y (w) + WIN_HEIGHT (w) - width + (width / nearness) - natural; x2 = x1 + width; y2 = y1 + height; glBegin (GL_QUADS); glTexCoord2d (0.0, 1.0); glVertex2i (x1, y1); glTexCoord2d (0.0, 0.0); glVertex2i (x1, y2); glTexCoord2d (1.0, 0.0); glVertex2i (x2, y2); glTexCoord2d (1.0, 1.0); glVertex2i (x2, y1); glEnd (); } srand(time(0)); for (i = 0.0f; i < WIN_HEIGHT (w) - height; i += height / nearness) { int natural = rand() % 10; x1 = WIN_X (w) - (width / nearness); y1 = WIN_Y (w) + i; x2 = x1 + width + natural; y2 = y1 + height + natural; glBegin (GL_QUADS); glTexCoord2d (0.0, 1.0); glVertex2i (x1, y1); glTexCoord2d (0.0, 0.0); glVertex2i (x1, y2); glTexCoord2d (1.0, 0.0); glVertex2i (x2, y2); glTexCoord2d (1.0, 1.0); glVertex2i (x2, y1); glEnd (); } srand(time(0)); for (i = 0.0f ; i < WIN_HEIGHT (w) - height; i += height / nearness) { int natural = rand() % 2; x1 = WIN_X (w) + WIN_WIDTH (w) - width + (width / nearness) - natural; y1 = WIN_Y (w) + i; x2 = x1 + width; y2 = y1 + height; glBegin (GL_QUADS); glTexCoord2d (0.0, 1.0); glVertex2i (x1, y1); glTexCoord2d (0.0, 0.0); glVertex2i (x1, y2); glTexCoord2d (1.0, 0.0); glVertex2i (x2, y2); glTexCoord2d (1.0, 1.0); glVertex2i (x2, y1); glEnd (); } glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA); glColor4usv (defaultColor); glDisable (GL_TEXTURE_2D); glDisable (GL_BLEND); glEnableClientState (GL_TEXTURE_COORD_ARRAY); glPopMatrix (); } return status; }