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)); }
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); }
RotateScreen::RotateScreen (CompScreen *s) : PluginClassHandler<RotateScreen,CompScreen> (s), gScreen (GLScreen::get (s)), cScreen (CompositeScreen::get (s)), cubeScreen (CubeScreen::get (s)), mSnapTop (false), mSnapBottom (false), mGrabIndex (0), mXrot (0.0f), mXVelocity (0.0f), mYrot (0.0f), mYVelocity (0.0f), mBaseXrot (0.0f), mMoving (false), mMoveTo (0.0f), mMoveWindow (0), mMoveWindowX (0), mSavedPointer (0,0), mGrabbed (false), mSlow (false), mGrabMask (0), mGrabWindow (0), mProgress (0.0f), mProgressVelocity (0.0f), mZoomTranslate (0.0f) { mPointerSensitivity = optionGetSensitivity () * ROTATE_POINTER_SENSITIVITY_FACTOR; #define ROTATEBIND(name) boost::bind (&RotateScreen::name, this, _1, _2, _3) #define ROTATEBINDOPT(name, ...) boost::bind (&RotateScreen::name, this, _1, _2, _3, __VA_ARGS__) optionSetInitiateButtonInitiate (ROTATEBIND (initiate)); optionSetInitiateButtonTerminate (ROTATEBIND (terminate)); optionSetRotateLeftKeyInitiate (ROTATEBINDOPT (rotate, -1)); optionSetRotateLeftButtonInitiate (ROTATEBINDOPT (rotate, -1)); optionSetRotateRightKeyInitiate (ROTATEBINDOPT (rotate, 1)); optionSetRotateRightButtonInitiate (ROTATEBINDOPT (rotate, 1)); optionSetRotateLeftWindowKeyInitiate (ROTATEBINDOPT (rotateWithWindow, -1)); optionSetRotateLeftWindowButtonInitiate (ROTATEBINDOPT (rotateWithWindow, -1)); optionSetRotateRightWindowKeyInitiate (ROTATEBINDOPT (rotateWithWindow, 1)); optionSetRotateRightWindowButtonInitiate (ROTATEBINDOPT (rotateWithWindow, 1)); optionSetRotateTo1KeyInitiate (ROTATEBINDOPT(rotateTo, 0, false)); optionSetRotateTo2KeyInitiate (ROTATEBINDOPT(rotateTo, 1, false)); optionSetRotateTo3KeyInitiate (ROTATEBINDOPT(rotateTo, 2, false)); optionSetRotateTo4KeyInitiate (ROTATEBINDOPT(rotateTo, 3, false)); optionSetRotateTo5KeyInitiate (ROTATEBINDOPT(rotateTo, 4, false)); optionSetRotateTo6KeyInitiate (ROTATEBINDOPT(rotateTo, 5, false)); optionSetRotateTo7KeyInitiate (ROTATEBINDOPT(rotateTo, 6, false)); optionSetRotateTo8KeyInitiate (ROTATEBINDOPT(rotateTo, 7, false)); optionSetRotateTo9KeyInitiate (ROTATEBINDOPT(rotateTo, 8, false)); optionSetRotateTo10KeyInitiate (ROTATEBINDOPT(rotateTo, 9, false)); optionSetRotateTo11KeyInitiate (ROTATEBINDOPT(rotateTo, 10, false)); optionSetRotateTo12KeyInitiate (ROTATEBINDOPT(rotateTo, 11, false)); optionSetRotateTo1WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 0, true)); optionSetRotateTo2WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 1, true)); optionSetRotateTo3WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 2, true)); optionSetRotateTo4WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 3, true)); optionSetRotateTo5WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 4, true)); optionSetRotateTo6WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 5, true)); optionSetRotateTo7WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 6, true)); optionSetRotateTo8WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 7, true)); optionSetRotateTo9WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 8, true)); optionSetRotateTo10WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 9, true)); optionSetRotateTo11WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 10, true)); optionSetRotateTo12WindowKeyInitiate (ROTATEBINDOPT(rotateTo, 11, true)); optionSetRotateToKeyInitiate (ROTATEBINDOPT(rotateTo, -1, false)); optionSetRotateWindowKeyInitiate (ROTATEBINDOPT(rotateTo, -1, true)); optionSetRotateFlipLeftEdgeInitiate (ROTATEBINDOPT(rotateEdgeFlip, -1)); optionSetRotateFlipLeftEdgeTerminate (ROTATEBIND (flipTerminate)); optionSetRotateFlipRightEdgeInitiate (ROTATEBINDOPT(rotateEdgeFlip, 1)); optionSetRotateFlipRightEdgeTerminate (ROTATEBIND (flipTerminate)); #undef ROTATEBIND #undef ROTATEBINDOPT ScreenInterface::setHandler (screen); CompositeScreenInterface::setHandler (cScreen); GLScreenInterface::setHandler (gScreen); CubeScreenInterface::setHandler (cubeScreen); }