File indexing completed on 2024-05-12 03:50:18

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2007 Murad Tagirov <tmurad@gmail.com>
0004 // SPDX-FileCopyrightText: 2007 Inge Wallin <ingwa@kde.org>
0005 //
0006 
0007 
0008 #ifndef MARBLE_GEODATASTYLESELECTOR_H
0009 #define MARBLE_GEODATASTYLESELECTOR_H
0010 
0011 #include "GeoDataObject.h"
0012 
0013 #include "geodata_export.h"
0014 
0015 namespace Marble
0016 {
0017 
0018 class GeoDataStyleSelectorPrivate;
0019 
0020 /**
0021  * @short an abstract base class for the style classes
0022  *
0023  * A GeoDataStyleSelector is a base class for the style classes Style
0024  * and StyleMap classes. The StyleMap class selects a style based on
0025  * the current mode of a Placemark (highlighted or normal). An element
0026  * derived from StyleSelector is uniquely identified by its id and its
0027  * url.
0028  *
0029  * @sa GeoDataStyle
0030  * @sa GeoDataStyleMap
0031  */
0032 class GEODATA_EXPORT GeoDataStyleSelector : public GeoDataObject
0033 {
0034   public:
0035     ~GeoDataStyleSelector() override;
0036 
0037     /**
0038     * @brief assignment operator
0039     */
0040     GeoDataStyleSelector& operator=( const GeoDataStyleSelector& other );
0041 
0042     bool operator==( const GeoDataStyleSelector &other ) const;
0043     bool operator!=( const GeoDataStyleSelector &other ) const;
0044 
0045     /**
0046      * @brief Serialize the styleselector to a stream
0047      * @param  stream  the stream
0048      */
0049     void pack( QDataStream& stream ) const override;
0050 
0051     /**
0052      * @brief  Unserialize the styleselector from a stream
0053      * @param  stream  the stream
0054      */
0055     void unpack( QDataStream& stream ) override;
0056 
0057  protected:
0058     GeoDataStyleSelector();
0059     GeoDataStyleSelector( const GeoDataStyleSelector& other );
0060 
0061  private:
0062     GeoDataStyleSelectorPrivate * const d;
0063 };
0064 
0065 }
0066 
0067 #endif