webengine/osswebengine/WebCore/page/symbian/WebCoreWidget.h
changeset 0 dd21522fd290
child 47 e1bea15f9a39
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebCore/page/symbian/WebCoreWidget.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,172 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+*
+*/
+
+
+#ifndef MWEBCOREWIDGET_H_
+#define MWEBCOREWIDGET_H_
+
+//  INCLUDES
+#include <e32base.h>
+#include <bitstd.h>
+#include  "WebCorePalette.h"
+#include "ScrollTypes.h"
+
+
+// DATA TYPES
+typedef enum {
+    EWebCoreScrollbarAuto,
+    EWebCoreScrollbarAlwaysOff,
+    EWebCoreScrollbarAlwaysOn
+} TWebCoreScrollbarMode;
+
+typedef enum {
+    PointerCursor,
+    CrossCursor,
+    HandCursor,
+    MoveCursor,
+    IBeamCursor,
+    WaitCursor,
+    HelpCursor,
+    SelectMultiCursor
+    } CursorTypes;
+
+// FORWARD DECLARATIONS
+class MScrollView;
+class QPainter;
+class CCoeControl;
+class GraphicsContext;
+class WebCoreGraphicsContext;
+
+class MWebCoreWidget
+  {
+  public:
+    virtual void draw(WebCoreGraphicsContext&, const TRect&) = 0;
+    virtual TBool isVisible() const = 0;
+    virtual TRect rect() const = 0;
+    virtual TSize sizeHint() const = 0;
+    virtual TBool isFocused() const = 0;
+    virtual void makeVisible(TBool) = 0;
+    virtual void setFocus(TBool aFocus) = 0;
+    virtual void setRect(const TRect& aRect) = 0;
+    virtual void activate() = 0;
+    virtual void setParent(MScrollView* aParent) =  0;
+    virtual void ref() = 0;
+    virtual void deref() = 0;
+    virtual TBool isScrollView() const { return EFalse; }
+    virtual TBool isObjectView() const { return EFalse; }
+    virtual void setPalette(TWebCorePalette) {}
+    virtual void setOutlineWidth(TUint8 ) {}
+    virtual void setWritingDirectionRtl(TBool) {}
+    virtual void setNeedsDisplay(TBool) = 0;
+    virtual void setCursor(CursorTypes) = 0;
+    virtual TBool isFocusable() const { return ETrue; }
+    virtual void* pluginScriptableObject() { return 0; }
+    virtual TBool hasResized() { return EFalse; }
+  };
+
+class MScrollView: public MWebCoreWidget
+  {
+  public:    
+    TBool isScrollView() const { return ETrue; }
+    virtual TSize sizeHint() const { return TSize(); }
+    virtual void draw(WebCoreGraphicsContext&, const TRect&) { }
+    virtual void invalidateRect(const TRect&, TBool) = 0;
+    virtual void scrollTo(const TPoint&) = 0;
+    virtual TRect visibleRect() const = 0;
+    virtual TSize contentSize() const = 0;
+    virtual void resizeContent(const TSize&) = 0;
+    virtual void setMayUseCopyScroll(TBool) = 0;
+    virtual TPoint convertContentToView(const TPoint&) = 0;
+    virtual TPoint convertViewToContent(const TPoint&) = 0;
+    virtual TBool hasHorizontalScrollbar() const = 0;
+    virtual TBool hasVerticalScrollbar() const = 0;
+    virtual void setHorizontalScrollingMode(WebCore::ScrollbarMode) = 0;
+    virtual void setVerticalScrollingMode(WebCore::ScrollbarMode) = 0;
+    virtual void setScrollingMode(WebCore::ScrollbarMode) = 0;
+    virtual WebCore::ScrollbarMode horizontalScrollingMode() = 0;
+    virtual WebCore::ScrollbarMode verticalScrollingMode() = 0;
+    virtual void setScrollbarsSuppressed(TBool, TBool) = 0;
+    virtual void addChild(MWebCoreWidget*) = 0;
+    virtual TInt scalingFactor() const = 0;
+
+    // coordinates transforming
+    TPoint  toDocCoords(const TPoint& aFrom) const;
+    TSize   toDocCoords(const TSize& aFrom) const;
+    TRect   toDocCoords(const TRect& aFrom) const;
+    TPoint  toViewCoords(const TPoint& aFrom) const;
+    TSize   toViewCoords(const TSize& aFrom) const;
+    TRect   toViewCoords(const TRect& aFrom) const;
+
+    bool isScaled() const;
+  };
+
+class MWebCoreObjectWidget: public MWebCoreWidget
+{
+public: 
+    virtual ~MWebCoreObjectWidget() {};
+    TBool isObjectView() const { return ETrue; }
+    virtual TBool isActive() const = 0;
+    virtual void deActivate() = 0;
+    virtual void setFont(CFont* aFont) = 0;
+    virtual void playPluginContent(const TDesC8& aRequestUrl) = 0;
+    virtual void stopPluginContent(const TDesC8& aRequestUrl) = 0;
+    virtual void positionChanged() {}    
+    virtual TBool isFocusable() const { return ETrue; }
+    virtual TBool hasResized() { return EFalse; }
+    };
+
+
+inline TPoint MScrollView::toDocCoords(const TPoint& aFrom) const
+    {
+    TInt z = scalingFactor();
+    return TPoint(aFrom.iX*100/z,aFrom.iY*100/z);
+    }
+
+inline TSize MScrollView::toDocCoords(const TSize& aFrom) const
+    {
+    TInt z = scalingFactor();
+    return TSize(aFrom.iWidth*100/z,aFrom.iHeight*100/z);
+    }
+
+inline TRect MScrollView::toDocCoords(const TRect& aFrom) const
+    {
+    return TRect(toDocCoords(aFrom.iTl),toDocCoords(aFrom.iBr));
+    }
+
+inline TPoint MScrollView::toViewCoords(const TPoint& aFrom) const
+    {
+    TInt z = scalingFactor();
+    return TPoint(aFrom.iX*z/100,aFrom.iY*z/100);
+    }
+
+inline TSize MScrollView::toViewCoords(const TSize& aFrom) const
+    {
+    TInt z = scalingFactor();
+    return TSize(aFrom.iWidth*z/100,aFrom.iHeight*z/100);
+    }
+
+inline TRect MScrollView::toViewCoords(const TRect& aFrom) const
+    {
+    return TRect(toViewCoords(aFrom.iTl),toViewCoords(aFrom.iBr));
+    }
+
+inline bool MScrollView::isScaled() const 
+    { 
+    return scalingFactor()!=100; 
+    }
+
+#endif //MWEBCOREWIDGET_H_