ConnectivitySymbolizer.h
// Copyright 2012 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions. // // Copyright 2011 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions at <your ArcGIS install location>/DeveloperKit10.1/userestrictions.txt. // #pragma once #include "resource.h" // main symbols #include "\Program Files (x86)\ArcGIS\DeveloperKit10.1\Include\CatIDs\ArcCATIDs.h" // component category IDs #if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA) #error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms." #endif // ConnectivitySymbolizer [ coclass, default(INASymbolizer2), threading(apartment), vi_progid("CustomSolver.ConnectivitySymbolizer"), progid("CustomSolver.ConnectivitySymbolizer.1"), version(1.0), uuid("4D82C01E-0DDE-40D6-9FA3-BABE65383C9C"), helpstring("ConnectivitySymbolizer Class") ] class ATL_NO_VTABLE ConnectivitySymbolizer : public INASymbolizer2 { public: ConnectivitySymbolizer() : c_randomColorHSVSaturation(100), c_baseRandomColorHSVValue(75), c_maxAboveBaseRandomColorHSVValue(25), c_maxFadedColorHSVSaturation(20) { } DECLARE_PROTECT_FINAL_CONSTRUCT() // Register the symbolizer in the ArcGIS Network Analyst extension symbolizers component category so that it can be dynamically applied // to a Connectivity Solver where appropriate. For example, on the Reset Symbology" context menu item of the NALayer. BEGIN_CATEGORY_MAP(ConnectivitySymbolizer) IMPLEMENTED_CATEGORY(__uuidof(CATID_NetworkAnalystSymbolizer)) END_CATEGORY_MAP() HRESULT FinalConstruct() { return S_OK; } void FinalRelease() { } public: // INASymbolizer STDMETHOD(Applies)(INAContext* pNAContext, VARIANT_BOOL* pFlag); STDMETHOD(get_Priority)(long* pPriority); STDMETHOD(CreateLayer)(INAContext* pNAContext, INALayer** ppNALayer); STDMETHOD(UpdateLayer)(INALayer* pNALayer, VARIANT_BOOL* pUpdated); // INASymbolizer2 methods STDMETHOD(ResetRenderers)(IColor* pSolverColor, INALayer* pNALayer); private: HRESULT CreateRandomColor(IColor** ppColor); HRESULT CreateSeedPointRenderer(IColor* pPointColor, IFeatureRenderer** ppFRenderer); HRESULT CreateBarrierRenderer(IColor* pBarrierColor, IFeatureRenderer** ppFRenderer); HRESULT CreateLineRenderer(IColor* pLineColor, IFeatureRenderer** ppFeatureRenderer); HRESULT CreateUnlocatedSymbol(ISymbol* pLocatedMarkerSymbol, ISymbol** ppUnlocatedMarkerSymbol); HRESULT CreateCharacterMarkerSymbol(CString fontName, IColor* pMarkerColor, IColor* pMarkerBackgroundColor, long characterIndex, long backgoundCharacterIndex, double markerSize, double makerBackgroundSize, double markerAngle, ISymbol** ppMarkerSymbol); const long c_randomColorHSVSaturation; const long c_baseRandomColorHSVValue; const long c_maxAboveBaseRandomColorHSVValue; const long c_maxFadedColorHSVSaturation; };