//
//     Copyright 2009 Simon Edwards <simon@simonzone.com>

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 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
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

namespace Marble
{

class MarbleGraphicsItem /Abstract/
{
%TypeHeaderCode
#include <MarbleGraphicsItem.h>
%End


public:
    enum CacheMode
    {
        NoCache,
        ItemCoordinateCache,
        DeviceCoordinateCache
    };

//ig                            MarbleGraphicsItem (MarbleGraphicsItemPrivate* d_ptr);
    QSizeF                  size () const;
    Marble::MarbleGraphicsItem::CacheMode  cacheMode () const;
    void                    setCacheMode (Marble::MarbleGraphicsItem::CacheMode mode);

protected:
    virtual bool            eventFilter (QObject* object, QEvent* e);
    void                    update ();
    virtual void            paint (QPainter* painter);

public:
    virtual ~MarbleGraphicsItem ();
    bool                    contains (const QPointF& point) const;
    Marble::AbstractMarbleGraphicsLayout*  layout () const;
    void                    setLayout (Marble::AbstractMarbleGraphicsLayout* layout);
    bool                    visible () const;
    void                    setVisible (bool visible);
    void                    hide ();
    void                    show ();
    void                    setSize (const QSizeF& size);
    virtual QSizeF          contentSize () const;
    virtual void            setContentSize (const QSizeF& size);
    virtual QRectF          contentRect () const;
private:
//force
                            MarbleGraphicsItem (const Marble::MarbleGraphicsItem& other);

//end
%ConvertToSubClassCode
    // CTSCC for subclasses of 'MarbleGraphicsItem'
    sipType = NULL;

    if (dynamic_cast<Marble::BillboardGraphicsItem*>(sipCpp))
        sipType = sipType_Marble_BillboardGraphicsItem;
    else if (dynamic_cast<Marble::ScreenGraphicsItem*>(sipCpp))
        {
        sipType = sipType_Marble_ScreenGraphicsItem;
        if (dynamic_cast<Marble::FrameGraphicsItem*>(sipCpp))
            {
            sipType = sipType_Marble_FrameGraphicsItem;
            if (dynamic_cast<Marble::LabelGraphicsItem*>(sipCpp))
                sipType = sipType_Marble_LabelGraphicsItem;
            }
        else if (dynamic_cast<Marble::WidgetGraphicsItem*>(sipCpp))
            sipType = sipType_Marble_WidgetGraphicsItem;
        }
%End
public:
    bool                    paintEvent (QPainter* painter, const Marble::ViewportParams* viewport);
    virtual void            setProjection (const Marble::ViewportParams* viewport);
};
// MarbleGraphicsItem

};
// Marble


%ModuleHeaderCode
//ctscc
#include <BillboardGraphicsItem.h>
#include <FrameGraphicsItem.h>
#include <LabelGraphicsItem.h>
#include <MarbleGraphicsItem.h>
#include <ScreenGraphicsItem.h>
#include <WidgetGraphicsItem.h>
%End
