Changeset 2286

Show
Ignore:
Timestamp:
03/08/10 10:52:16 (5 months ago)
Author:
gm78
Message:

In order for a KML feature to be visible, the visibility tag of all its ancestors must be also visible. Fixed the Visible property for KML data sets.

Location:
FalconView/trunk/public/fvw_core/GeodataDataSources
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • FalconView/trunk/public/fvw_core/GeodataDataSources/KMLNetworkLinkResource.cpp

    r2277 r2286  
    3333      return NULL; 
    3434 
    35    if (m_wrappedDataSource == NULL) 
     35   if (m_wrappedDataSource == NULL && m_kmlFile != NULL) 
    3636   { 
    3737      // populate the data source from the URL 
  • FalconView/trunk/public/fvw_core/GeodataDataSources/LibkmlGroundOverlay.cpp

    r2280 r2286  
    327327STDMETHODIMP CLibkmlGroundOverlay::get_Visible(VARIANT_BOOL *visible) 
    328328{ 
    329    *visible = m_ground_overlay->has_visibility() ? (m_ground_overlay->get_visibility() ? VARIANT_TRUE : VARIANT_FALSE) : VARIANT_TRUE; 
     329   *visible = CUtilityMethods::KMLFeatureVisible(m_ground_overlay) ? VARIANT_TRUE : VARIANT_FALSE; 
    330330   return S_OK; 
    331331} 
  • FalconView/trunk/public/fvw_core/GeodataDataSources/LibkmlNetworkLink.cpp

    r2277 r2286  
    379379{ 
    380380   // note that we base the visibility on the properties of the network link, not the wrapped object 
    381    *visible = m_networkLink->has_visibility() ? (m_networkLink->get_visibility() ? VARIANT_TRUE : VARIANT_FALSE) : VARIANT_TRUE; 
     381   *visible = CUtilityMethods::KMLFeatureVisible(m_networkLink) ? VARIANT_TRUE : VARIANT_FALSE; 
    382382   return S_OK; 
    383383} 
  • FalconView/trunk/public/fvw_core/GeodataDataSources/LibkmlScreenOverlay.cpp

    r2267 r2286  
    268268STDMETHODIMP CLibkmlScreenOverlay::get_Visible(VARIANT_BOOL *visible) 
    269269{ 
    270    *visible = m_screen_overlay->has_visibility() ? (m_screen_overlay->get_visibility() ? VARIANT_TRUE : VARIANT_FALSE) : VARIANT_TRUE; 
     270   *visible = CUtilityMethods::KMLFeatureVisible(m_screen_overlay) ? VARIANT_TRUE : VARIANT_FALSE; 
    271271   return S_OK; 
    272272} 
  • FalconView/trunk/public/fvw_core/GeodataDataSources/UtilityMethods.cpp

    r2242 r2286  
    704704 
    705705   return true; // returns true if no region, or region is active 
     706} 
     707 
     708/* static */ bool CUtilityMethods::KMLFeatureVisible(const kmldom::FeaturePtr& feature) 
     709{ 
     710   if (feature == NULL) 
     711      return true; 
     712 
     713   // In order for a feature to be visible, the <visibility> tag of all its ancestors must also be set to 1 
     714   if (feature->has_visibility() && feature->get_visibility() == true) 
     715      return KMLFeatureVisible(kmldom::AsFeature(GetAncestorOfType(feature, kmldom::Type_Feature))); 
     716 
     717   return false; 
    706718} 
    707719 
  • FalconView/trunk/public/fvw_core/GeodataDataSources/UtilityMethods.h

    r2279 r2286  
    109109      DOUBLE degreesPerPixelX, DOUBLE degreesPerPixelY); // use negative number if dpp is not set) 
    110110 
     111   static bool KMLFeatureVisible(const kmldom::FeaturePtr& feature); 
     112 
    111113   static std::string ResolveURI(const char* base_url, const char* uri); 
    112114   static void Create32BppBitmap(VARIANT* imageData, int width, int height);