Thanks Martins, changes merged and submitted to SVN.

On Wed, Oct 29, 2008 at 6:47 PM, Martins Innus <[EMAIL PROTECTED]> wrote:
> Hello,
>        Here is a fix to add requestWarpPointer for OS X.  It seems to work
> for me, I just took what osgProducer had.  These are updated files to 2.7.3
>
> Martins
>
> /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
>  *
>  * This library is open source and may be redistributed and/or modified
> under
>  * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
>  * (at your option) any later version.  The full license is in LICENSE file
>  * included with this distribution, and on the openscenegraph.org website.
>  *
>  * This library is distributed in the hope that it will be useful,
>  * but WITHOUT ANY WARRANTY; without even the implied warranty of
>  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>  * OpenSceneGraph Public License for more details.
> */
>
> /* Note, elements of GraphicsWindowX11 have used
> Prodcer/RenderSurface_X11.cpp as both
>  * a guide to use of X11/GLX and copiying directly in the case of
> setBorder().
>  * These elements are license under OSGPL as above, with Copyright (C)
> 2001-2004  Don Burns.
>  */
>
> #ifndef OSGVIEWER_GRAPHICSWINDOWCARBON
> #define OSGVIEWER_GRAPHICSWINDOWCARBON 1
>
> #ifdef __APPLE__
>
> #include <osgViewer/GraphicsWindow>
> #include <Carbon/Carbon.h>
> #include <AGL/agl.h>
> namespace osgViewer
> {
>
> class GraphicsWindowCarbon : public osgViewer::GraphicsWindow
> {
>    public:
>
>        GraphicsWindowCarbon(osg::GraphicsContext::Traits* traits):
>            _valid(false),
>            _initialized(false),
>            _realized(false),
>            _ownsWindow(true),
>            _currentCursor(RightArrowCursor)
>        {
>            _traits = traits;
>
>            init();
>
>            if (valid())
>            {
>                setState( new osg::State );
>                getState()->setGraphicsContext(this);
>
>                if (_traits.valid() && _traits->sharedContext)
>                {
>                    getState()->setContextID(
> _traits->sharedContext->getState()->getContextID() );
>                    incrementContextIDUsageCount( getState()->getContextID()
> );
>                }
>                else
>                {
>                    getState()->setContextID(
> osg::GraphicsContext::createNewContextID() );
>                }
>            }
>        }
>
>        virtual bool isSameKindAs(const Object* object) const { return
> dynamic_cast<const GraphicsWindowCarbon*>(object)!=0; }
>        virtual const char* libraryName() const { return "osgViewer"; }
>        virtual const char* className() const { return
> "GraphicsWindowCarbon"; }
>
>        virtual bool valid() const { return _valid; }
>
>        /** Realise the GraphicsContext.*/
>        virtual bool realizeImplementation();
>
>        /** Return true if the graphics context has been realised and is
> ready to use.*/
>        virtual bool isRealizedImplementation() const { return _realized; }
>
>        /** Close the graphics context.*/
>        virtual void closeImplementation();
>
>        /** Make this graphics context current.*/
>        virtual bool makeCurrentImplementation();
>
>        /** Release the graphics context.*/
>        virtual bool releaseContextImplementation();
>
>        /** Swap the front and back buffers.*/
>        virtual void swapBuffersImplementation();
>
>        /** Check to see if any events have been generated.*/
>        virtual void checkEvents();
>
>        /** Set the window's position and size.*/
>        virtual bool setWindowRectangleImplementation(int x, int y, int
> width, int height);
>
>        /** Set Window decoration.*/
>        virtual bool setWindowDecorationImplementation(bool flag);
>
>                // Override from GUIActionAdapter
>        virtual void requestWarpPointer( float x, float y);
>
>        /** Get focus.*/
>        virtual void grabFocus();
>
>        /** Get focus on if the pointer is in this window.*/
>        virtual void grabFocusIfPointerInWindow();
>
>        void requestClose() { _closeRequested = true; }
>
>        virtual void resizedImplementation(int x, int y, int width, int
> height);
>
>        virtual void setWindowName (const std::string & name);
>        virtual void useCursor(bool cursorOn);
>        virtual void setCursor(MouseCursor mouseCursor);
>
>        WindowRef getNativeWindowRef() { return _window; }
>
>        bool handleMouseEvent(EventRef theEvent);
>        bool handleKeyboardEvent(EventRef theEvent);
>        bool handleModifierKeys(EventRef theEvent);
>
>        /** WindowData is used to pass in the Carbon window handle attached
> the GraphicsContext::Traits structure. */
>        class WindowData : public osg::Referenced
>        {
>            public:
>                WindowData(WindowRef window, AGLDrawable* drawable=NULL ):
> //ADEGLI
>                    _window(window), _AGLDrawable(drawable)
> ,_installEventHandler(false) {} //ADEGLI
>
>                WindowRef getNativeWindowRef() { return _window; }
>                void setInstallEventHandler(bool flag) { _installEventHandler
> = flag; }
>                bool installEventHandler() { return _installEventHandler; }
>                AGLDrawable* getAGLDrawable() { return _AGLDrawable; }
> //ADEGLI
>
>            private:
>                WindowRef    _window;
>                AGLDrawable* _AGLDrawable; //ADEGLI
>                bool         _installEventHandler;
>
>        };
>
>        /// install the standard os-eventhandler
>        void installEventHandler();
>
>        /// get the AGL context
>        AGLContext getAGLContext() { return _context; }
>
>        // get the pixelformat
>        AGLPixelFormat getAGLPixelFormat() { return _pixelFormat; }
>
>    protected:
>
>        void init();
>
>        void transformMouseXY(float& x, float& y);
>
>
>
>
>
>        bool            _valid;
>        bool            _initialized;
>        bool            _realized;
>        bool            _useWindowDecoration;
>
>        bool            _ownsWindow;
>        WindowRef       _window;
>        AGLContext      _context;
>        AGLPixelFormat  _pixelFormat;
>
>        int             _windowTitleHeight;
>    private:
>        /// computes the window attributes
>        WindowAttributes computeWindowAttributes(bool useWindowDecoration,
> bool supportsResize);
>        void handleModifierKey(UInt32 modifierKey, UInt32 modifierMask,
> osgGA::GUIEventAdapter::KeySymbol keySymbol);
>
>
>        bool            _closeRequested;
>        UInt32          _lastModifierKeys;
>        MouseCursor     _currentCursor;
> };
>
> }
>
> #endif
> #endif
>
> _______________________________________________
> osg-submissions mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>
>
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to