/*------------------------------------------------------------------------------ | Dialog::Dialog | ------------------------------------------------------------------------------*/ Dialog :: Dialog( unsigned long ulWindowId, IWindow* pOwner ) : IFrameWindow( deferCreation ), ulId( ulWindowId ) { IThread::current().initializeGUI(); IResourceId resId( ulWindowId ); IResourceLibrary resLib( resId.resourceLibrary() ); IWindowHandle dialog = resLib.loadDialog( resId.id(), 0, pOwner, WinDefDlgProc, 0 ); /* Dialog was created. Call IFrameWindow::start */ /* to create a new frame handler, add it to this */ /* frame window, and initiate message handling */ /* for the window. */ start( dialog ); } //Dialog::Dialog
TEST(ResourceId, Semantics) { ResourceId resIdDb(RESOURCE_DATABASE, 324334234); ASSERT(resIdDb.getType() == RESOURCE_DATABASE); ASSERT(resIdDb.getHashId() == 324334234); ResourceId resIdColl(RESOURCE_COLLECTION, std::string("TestDB.collection")); ASSERT(resIdColl.getType() == RESOURCE_COLLECTION); // Comparison functions // Make sure the operator < is defined. ASSERT(resIdDb < resIdColl || resIdColl < resIdDb); ResourceId resId(RESOURCE_DATABASE, 324334234); ASSERT_EQUALS(resIdDb, resId); // Assignment functions resId = resIdColl; ASSERT_EQUALS(resId, resIdColl); }
/// <summary> /// Executes the specific request. /// </summary> /// <returns> /// MgHttpResponse /// This contains the response (including MgHttpResult and StatusCode) from the server. /// </returns> void MgHttpGetDrawing::Execute(MgHttpResponse& hResponse) { Ptr<MgHttpResult> hResult = hResponse.GetResult(); MG_HTTP_HANDLER_TRY() // Check common parameters ValidateCommonParameters(); MgResourceIdentifier resId(m_resId); // Create Proxy Drawing Service instance Ptr<MgDrawingService> service = (MgDrawingService*)(CreateService(MgServiceType::DrawingService)); // call the C++ API Ptr<MgByteReader> byteReaderResult = service->GetDrawing(&resId); hResult->SetResultObject(byteReaderResult, byteReaderResult->GetMimeType()); MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpGetDrawing.Execute") }
MgByteReader* c_RestFetchImage::FetchImage(c_RestUri* HttpRequest,c_CfgDataSource_MapGuide* MapGuideSource , const std::wstring& MapDefId,MgEnvelope* ZoomTo, const std::wstring& ZoomFactor , const std::wstring& MapSelectionLayer, const std::wstring& FeatureSource, const std::wstring& FdoClassName , MgFeatureQueryOptions *QueryOptions ) { Ptr<c_RestUriRequestParam> query_params = HttpRequest-> GetRequestParam(); //Ptr<c_RestUriPathParam> path_params = HttpRequest-> GetUriPathParameters(); //STRING filter = path_params->GetParameterValue(D_REST_URI_SEGMENT_MAP_IMAGE_PNG); //Ptr<c_RestRequestParam> filterparams = new c_RestRequestParam(); //RestUriFilterParser::Parse(filter, filterparams); Ptr<c_RestMgSiteConnection> mgsiteconn = c_RestMgSiteConnection::Open(MapGuideSource->GetUsername(),MapGuideSource->GetPassword(),MapGuideSource->GetServerIP(),MapGuideSource->GetServerPort()); //MgHtmlController controller(mgsiteconn); // Get the map view commands //Ptr<c_RestRequestParam> params = m_hRequest->GetRequestParam(); //Ptr<MgPropertyCollection> mapViewCommands = params->GetParameters()->GetPropertyCollection(); //Ptr<MgPropertyCollection> mapViewCommands = filterparams->GetParameters()->GetPropertyCollection(); STRING map_resid; STRING mapname; Ptr<MgMap> map; Ptr<MgSelection> selection; Ptr<MgPropertyCollection> mapviewcommands = new MgPropertyCollection(); { STRING sessionid; Ptr<MgSite> mgSite = mgsiteconn->GetSite(); sessionid = mgSite->CreateSession(); //------------------------------------------------------- // Create a new Map from MapDefinition in a Session //------------------------------------------------------- map = new MgMap(); Ptr<MgResourceIdentifier> resid_mapdef = new MgResourceIdentifier(MapDefId); mapname = L"KINGREST"; Ptr<MgResourceService> resourceService = dynamic_cast<MgResourceService*>(mgsiteconn->CreateService(MgServiceType::ResourceService)); map->Create(resourceService, resid_mapdef, mapname ); // Save the MgMap state map_resid = L"Session:" + sessionid + L"//" + mapname + L"." + MgResourceType::Map; Ptr<MgResourceIdentifier> resid_map = new MgResourceIdentifier(map_resid); map->Save(resourceService,resid_map); selection = new MgSelection(map); if( MapSelectionLayer.length()>0 ) { MgResourceIdentifier resId(FeatureSource); Ptr<MgFeatureService> service = (MgFeatureService*)(mgsiteconn->CreateService(MgServiceType::FeatureService)); Ptr<MgFeatureReader> featureReader = service->SelectFeatures(&resId, FdoClassName, QueryOptions); //Ptr<MgResourceIdentifier> layerresidid = new MgResourceIdentifier(HttpRequest->m_DataLayerConfig->m_MapSelectionLayer); //Ptr<MgLayer> layerdef = new MgLayer(layerid,resourceService); Ptr<MgLayerBase> layer; Ptr<MgLayerCollection> layers = map->GetLayers(); int layerid =layers->IndexOf(MapSelectionLayer); if( layerid >= 0 ) { layer = layers->GetItem(layerid); } //auto_ptr<MdfModel::LayerDefinition> layerdef( MgLayerBase::GetLayerDefinition(resourceService, layerid)); selection->AddFeatures(layer,featureReader,0); featureReader->Close(); } selection->Save(resourceService, mapname); Ptr<MgReadOnlyLayerCollection> selLayers = selection->GetLayers(); int sel_layercount = selLayers ? selLayers->GetCount() : 0; MgStringPropertyCollection* coll_params = query_params->GetParameters(); int dwidth=260; int dheight=260; int dpi = 96; STRING strval; Ptr<MgStringProperty> prop; if( coll_params->Contains(L"SETDISPLAYWIDTH" ) ) { STRING val = coll_params->GetValue(L"SETDISPLAYWIDTH"); dwidth = MgUtil::StringToDouble(val); if( dwidth <= 0 ) dwidth=260; } { MgUtil::Int32ToString(dwidth,strval); prop = new MgStringProperty(L"SETDISPLAYWIDTH",strval); mapviewcommands->Add(prop); } if( coll_params->Contains(L"SETDISPLAYHEIGHT" ) ) { STRING val = coll_params->GetValue(L"SETDISPLAYHEIGHT"); dheight = MgUtil::StringToDouble(val); if( dheight <= 0 ) dheight=260; } { MgUtil::Int32ToString(dheight,strval); prop = new MgStringProperty(L"SETDISPLAYHEIGHT",strval); mapviewcommands->Add(prop); } if( coll_params->Contains(L"SETDISPLAYDPI" ) ) { STRING val = coll_params->GetValue(L"SETDISPLAYDPI"); dpi = MgUtil::StringToDouble(val); if( dpi <= 0 ) dpi=96; } { MgUtil::Int32ToString(dpi,strval); prop = new MgStringProperty(L"SETDISPLAYDPI",strval); mapviewcommands->Add(prop); } Ptr<MgCoordinate> xy1 = ZoomTo->GetLowerLeftCoordinate(); Ptr<MgCoordinate> xy2 = ZoomTo->GetUpperRightCoordinate(); double cx = ((double)xy1->GetX() + (double)xy2->GetX()) / 2.0; double cy = ((double)xy1->GetY() + (double)xy2->GetY()) / 2.0; MgUtil::DoubleToString(cx,strval); prop = new MgStringProperty(L"SETVIEWCENTERX",strval); mapviewcommands->Add(prop); MgUtil::DoubleToString(cy,strval); prop = new MgStringProperty(L"SETVIEWCENTERY",strval); mapviewcommands->Add(prop); double zoomfactor=1.3; if( coll_params->Contains(L"ZOOMFACTOR" ) ) { STRING val = coll_params->GetValue(L"ZOOMFACTOR"); zoomfactor = MgUtil::StringToDouble(val); if( zoomfactor <= 0.0 ) zoomfactor = 1.3; } else { if( ZoomFactor.length() > 0 ) { zoomfactor = MgUtil::StringToDouble(ZoomFactor); if( zoomfactor <= 0.0 ) zoomfactor = 1.3; } } double scale; double mcsH = xy2->GetY() - xy1->GetY(); double mcsW = xy2->GetX() - xy1->GetX(); mcsH = mcsH * zoomfactor; mcsW = mcsW * zoomfactor; double metersperpixel = 0.0254 / dpi; if (dheight * mcsW > dwidth * mcsH) scale = mcsW * map->GetMetersPerUnit() / (dwidth * metersperpixel); // width-limited else scale = mcsH * map->GetMetersPerUnit() / (dheight * metersperpixel); // height-limited MgUtil::DoubleToString(scale,strval); prop = new MgStringProperty(L"SETVIEWSCALE",strval); mapviewcommands->Add(prop); } Ptr<MgByteReader> mapimage = GetDynamicMapOverlayImage_ViewCommands(mgsiteconn,mapname, MgImageFormats::Png, true,mapviewcommands); //Ptr<MgByteReader> mapimage = controller.GetMapImage(map,selection, MgImageFormats::Png, mapviewcommands,true,true); // Set the result //Ptr<c_RestResult> result; //result = HttpResponse.GetResult(); //result->SetResultObject(mapimage, mapimage->GetMimeType()); return mapimage; }//end of c_RestFetchImage::FetchImage