FireScreen::FireScreen (CompScreen *screen) : PluginClassHandler <FireScreen, CompScreen> (screen), cScreen (CompositeScreen::get (screen)), gScreen (GLScreen::get (screen)), init (true), brightness (1.0), grabIndex (0) { ScreenInterface::setHandler (screen, false); CompositeScreenInterface::setHandler (cScreen, false); GLScreenInterface::setHandler (gScreen, false); optionSetInitiateKeyInitiate (boost::bind (&FireScreen::initiate, this, _1, _2, _3)); optionSetInitiateButtonInitiate (boost::bind (&FireScreen::initiate, this, _1, _2, _3)); optionSetInitiateKeyTerminate (boost::bind (&FireScreen::terminate, this, _1, _2, _3)); optionSetInitiateButtonTerminate (boost::bind (&FireScreen::terminate, this, _1, _2, _3)); optionSetClearKeyInitiate (boost::bind (&FireScreen::clear, this, _1, _2, _3)); optionSetClearButtonInitiate (boost::bind (&FireScreen::clear, this, _1, _2, _3)); optionSetAddParticleInitiate (boost::bind (&FireScreen::addParticle, this, _1, _2, _3)); }
WaterScreen::WaterScreen (CompScreen *screen) : PluginClassHandler<WaterScreen,CompScreen> (screen), cScreen (CompositeScreen::get (screen)), gScreen (GLScreen::get (screen)), grabIndex (0), oldFbo (NULL), fboIndex (0), useFbo (true), texWidth (0), texHeight (0), target (0), tx (0), ty (0), count (0), data (NULL), d0 (NULL), d1 (NULL), t0 (NULL), wiperAngle (0), wiperSpeed (0), lightVec(GLVector(optionGetLightVecX(), optionGetLightVecY(), optionGetLightVecZ())) { offsetScale = optionGetOffsetScale () * 10.0f; wiperTimer.setCallback (boost::bind (&WaterScreen::wiperTimeout, this)); rainTimer.setCallback (boost::bind (&WaterScreen::rainTimeout, this)); waterSetup (); optionSetOffsetScaleNotify (boost::bind (&WaterScreen::optionChange, this, _2)); optionSetRainDelayNotify (boost::bind (&WaterScreen::optionChange, this, _2)); optionSetLightVecXNotify (boost::bind (&WaterScreen::optionChange, this, _2)); optionSetLightVecYNotify (boost::bind (&WaterScreen::optionChange, this, _2)); optionSetLightVecZNotify (boost::bind (&WaterScreen::optionChange, this, _2)); optionSetInitiateKeyInitiate (waterInitiate); optionSetInitiateKeyTerminate (waterTerminate); optionSetToggleRainKeyTerminate (waterToggleRain); optionSetToggleWiperKeyInitiate (waterToggleWiper); optionSetTitleWaveInitiate (waterTitleWave); optionSetPointInitiate (waterPoint); optionSetLineInitiate (waterLine); ScreenInterface::setHandler (screen, false); CompositeScreenInterface::setHandler (cScreen, false); GLScreenInterface::setHandler (gScreen, false); }
ResizeScreen::ResizeScreen (CompScreen *s) : PluginClassHandler<ResizeScreen,CompScreen> (s), gScreen (GLScreen::get (s)) { logic.mScreen = new resize::CompScreenImpl (screen); logic.cScreen = resize::CompositeScreenImpl::wrap (CompositeScreen::get (s)); logic.gScreen = resize::GLScreenImpl::wrap (gScreen); logic.options = this; CompOption::Vector atomTemplate; Display *dpy = s->dpy (); ResizeOptions::ChangeNotify notify = boost::bind (&ResizeScreen::optionChanged, this, _1, _2); atomTemplate.resize (4); for (int i = 0; i < 4; i++) { char buf[4]; snprintf (buf, 4, "%i", i); CompString tmpName (buf); atomTemplate.at (i).setName (tmpName, CompOption::TypeInt); } logic.resizeNotifyAtom = XInternAtom (s->dpy (), "_COMPIZ_RESIZE_NOTIFY", 0); logic.resizeInformationAtom = new resize::PropertyWriterImpl ( new PropertyWriter ("_COMPIZ_RESIZE_INFORMATION", atomTemplate)); for (unsigned int i = 0; i < NUM_KEYS; i++) logic.key[i] = XKeysymToKeycode (s->dpy (), XStringToKeysym (logic.rKeys[i].name)); logic.leftCursor = XCreateFontCursor (dpy, XC_left_side); logic.rightCursor = XCreateFontCursor (dpy, XC_right_side); logic.upCursor = XCreateFontCursor (dpy, XC_top_side); logic.upLeftCursor = XCreateFontCursor (dpy, XC_top_left_corner); logic.upRightCursor = XCreateFontCursor (dpy, XC_top_right_corner); logic.downCursor = XCreateFontCursor (dpy, XC_bottom_side); logic.downLeftCursor = XCreateFontCursor (dpy, XC_bottom_left_corner); logic.downRightCursor = XCreateFontCursor (dpy, XC_bottom_right_corner); logic.middleCursor = XCreateFontCursor (dpy, XC_fleur); logic.cursor[0] = logic.leftCursor; logic.cursor[1] = logic.rightCursor; logic.cursor[2] = logic.upCursor; logic.cursor[3] = logic.downCursor; optionSetInitiateKeyInitiate (resizeInitiateDefaultMode); optionSetInitiateKeyTerminate (resizeTerminate); optionSetInitiateButtonInitiate (resizeInitiateDefaultMode); optionSetInitiateButtonTerminate (resizeTerminate); optionSetOutlineModifierNotify (notify); optionSetRectangleModifierNotify (notify); optionSetStretchModifierNotify (notify); optionSetCenteredModifierNotify (notify); resizeMaskValueToKeyMask (optionGetOutlineModifierMask (), &logic.outlineMask); resizeMaskValueToKeyMask (optionGetRectangleModifierMask (), &logic.rectangleMask); resizeMaskValueToKeyMask (optionGetStretchModifierMask (), &logic.stretchMask); resizeMaskValueToKeyMask (optionGetCenteredModifierMask (), &logic.centeredMask); ScreenInterface::setHandler (s); if (gScreen) GLScreenInterface::setHandler (gScreen, false); }