/*
 *  TnMapLandmarkParams.h
 *  OpenGL Map Engine
 *
 *  Created by Thant on 9/12/2011
 *  Copyright 2011 TeleNav. All rights reserved.
 *
 */

#ifndef TN_MAP_LANDMARK_PARAMS_H
#define TN_MAP_LANDMARK_PARAMS_H

#include <string>

#include "TnMapStyleParams.h"
#include "foundation/SharedPtr.h"
#include "foundation/TnTypes.h"
#include "TnMapAnnotationType.h"
#include "TnMapConf.h"

class TnMapConf;
class TnMapGroupIconParams;


class TnMapLandmarkParams : public TnMapStyleParams
{
public:
    
    friend class TnMapStyleParamsFactory;

    bool Valid() const;


    std::string const &         GetCullImmunityGroupName() const;
    TnMapLandmarkParams &       SetCullImmunityGroupName(std::string const & style);

    double                      GetPriorityBias() const;
    TnMapLandmarkParams &       SetPriorityBias(double priorityBias);

    // Transition Duration is how quickly the landmarks fade in or out of the scene
    double                      GetTransitionDuration() const;
    TnMapLandmarkParams &       SetTransitionDuration(double duration);
    double                      GetAlpha() const;
    TnMapLandmarkParams &       SetAlpha(double alpha);

    double                      GetPriority() const;
    double                      GetBiasedPriority() const;

    bool                        GetAlwaysVisible() const;
    void                        SetAlwaysVisible(bool);
	TnMapConf::BoolPtr          GetShowLandmarkParam() const;

private:
    
    //Factory repsonsible for creation
    TnMapLandmarkParams(Tn::Foundation::shared_ptr<TnMapConf> const & conf, 
                        std::string const & path);
    
    std::string const & GetDefaultKey() const;
    mutable std::string m_defaultKey;

    //Read values from config based on StyleKey
    void ReadStyle();

    // cull immunity group name
    std::string immunity_group;

    double priorityBias;
    double priority;

    double transitionDuration;
    bool alwaysVisible;
	TnMapConf::BoolPtr showLandmarkParam;
    double m_alpha;
};

#endif // TN_MAP_LANDMARK_PARAMS_H
