private void writeSettingsToXML(String path, ImageOptions iOpt) { XmlTextWriter writer = new XmlTextWriter(path, null); // console print out for testing purpose // XmlTextWriter writer = new XmlTextWriter(Console.Out); writer.Formatting = Formatting.Indented; // Starts a new document writer.WriteStartDocument(); //Write comments writer.WriteComment("Map-Image Options"); // Add elements to the file writer.WriteStartElement("ImageOptions", ""); writer.WriteStartElement("Name", ""); writer.WriteString(iOpt.Name); writer.WriteEndElement(); writer.WriteStartElement("Description", ""); writer.WriteString(iOpt.Description); writer.WriteEndElement(); writer.WriteStartElement("SWLat", ""); writer.WriteString(iOpt.SWLat.ToString()); writer.WriteEndElement(); writer.WriteStartElement("SWLong", ""); writer.WriteString(iOpt.SWLong.ToString()); writer.WriteEndElement(); writer.WriteStartElement("SELat", ""); writer.WriteString(iOpt.SELat.ToString()); writer.WriteEndElement(); writer.WriteStartElement("SELong", ""); writer.WriteString(iOpt.SELong.ToString()); writer.WriteEndElement(); writer.WriteStartElement("NELat", ""); writer.WriteString(iOpt.NELat.ToString()); writer.WriteEndElement(); writer.WriteStartElement("NELong", ""); writer.WriteString(iOpt.NELong.ToString()); writer.WriteEndElement(); writer.WriteStartElement("ZoomLevel", ""); writer.WriteString(iOpt.ZoomLevel.ToString()); writer.WriteEndElement(); writer.WriteEndElement(); // Ends the document writer.WriteEndDocument(); writer.Flush(); writer.Close(); }
private void saveGoogleMapToLocalMachine() { Object url; HtmlDocument doc = webBrowserMap.Document; if (this.checkBoxUseDeviceDimensions.Checked) { Object[] obj = new Object[2]; obj[0] = (Object)deviceWidth; obj[1] = (Object)deviceHeight; url = webBrowserMap.Document.InvokeScript("loadImageWithParam", obj); } else { url = webBrowserMap.Document.InvokeScript("loadImage"); } StringBuilder builder = new StringBuilder(); builder.Append(Environment.CurrentDirectory + @"\Maps"); builder.Append(@"\"); builder.Append(this.textBoxFileName.Text.Trim()); builder.Append(".png"); String localFileName = builder.ToString(); if (!Directory.Exists(Environment.CurrentDirectory + @"\Maps")) { Directory.CreateDirectory(Environment.CurrentDirectory + @"\Maps"); } if (this.DownloadFile(url.ToString(), localFileName) > 0) { builder = new StringBuilder(); builder.Append(Environment.CurrentDirectory + @"\Maps"); builder.Append(@"\"); builder.Append(this.textBoxFileName.Text.Trim()); builder.Append(".xml"); ImageOptions iOpt = new ImageOptions(); iOpt.Name = this.textBoxFileName.Text.Trim(); iOpt.Description = this.textBoxFileDescription.Text.Trim(); if (webBrowserMap.Document != null) { doc = webBrowserMap.Document; Object temp; temp = doc.InvokeScript("getSWLatitude"); iOpt.SWLat = float.Parse(temp.ToString()); iOpt.SELat = float.Parse(temp.ToString()); temp = doc.InvokeScript("getSWLongitude"); iOpt.SWLong = float.Parse(temp.ToString()); temp = doc.InvokeScript("getNELatitude"); iOpt.NELat = float.Parse(temp.ToString()); temp = doc.InvokeScript("getNELongitude"); iOpt.NELong = float.Parse(temp.ToString()); iOpt.SELong = float.Parse(temp.ToString()); temp = doc.InvokeScript("getZoomLevel"); iOpt.ZoomLevel = int.Parse(temp.ToString()); } this.writeSettingsToXML(builder.ToString(), iOpt); this.textBoxFileDescription.Clear(); this.textBoxFileName.Clear(); } }
private void saveMapToLocalMachine() { if (pictureBoxMap.Image == null) { throw new Exception("No map loaded to be saved."); } StringBuilder builder = new StringBuilder(); builder.Append(Environment.CurrentDirectory + @"\Maps"); builder.Append(@"\"); builder.Append(this.textBoxFileName.Text.Trim()); builder.Append(".png"); String localFileName = builder.ToString(); if (!Directory.Exists(Environment.CurrentDirectory + @"\Maps")) { Directory.CreateDirectory(Environment.CurrentDirectory + @"\Maps"); } ImageOptions iOpt = new ImageOptions(); iOpt.Name = this.textBoxFileName.Text.Trim(); iOpt.Description = this.textBoxFileDescription.Text.Trim(); if (this.checkBoxUseDeviceDimensions.Checked) { //Cut and Save Image Bitmap img = new Bitmap(deviceWidth, deviceHeight); Graphics g = Graphics.FromImage(img); g.DrawImageUnscaledAndClipped(pictureBoxMap.Image, new Rectangle((-1)*overlayX, (-1)*overlayY, deviceWidth+overlayX, deviceHeight+overlayY)); g.Save(); img.Save(localFileName, ImageFormat.Png); try { CultureInfo info = null; if (textBoxNELong.Text.Contains(",")) info = System.Globalization.CultureInfo.CreateSpecificCulture("de-de"); else if (textBoxNELong.Text.Contains(".")) info = System.Globalization.CultureInfo.CreateSpecificCulture("en-us"); // for now: maps are assumed northbound // otherwise quotients must be differently calculated float deltaLongitude = float.Parse(textBoxNELong.Text.Trim(), info) - float.Parse(textBoxSWLong.Text.Trim(), info); float ratioLongitude = deltaLongitude / pictureBoxMap.Image.Width; float deltaLatitude = float.Parse(textBoxNELat.Text.Trim(), info) - float.Parse(textBoxSWLat.Text.Trim(), info); float ratioLatitude = deltaLatitude / pictureBoxMap.Image.Height; iOpt.NELong = float.Parse(textBoxNELong.Text.Trim(), info) - ((pictureBoxMap.Image.Width - overlayX - deviceWidth) * ratioLongitude); iOpt.NELat = float.Parse(textBoxNELat.Text.Trim(), info) - (overlayY * ratioLatitude); iOpt.SWLong = float.Parse(textBoxSWLong.Text.Trim(), info) + (overlayX * ratioLongitude); iOpt.SWLat = float.Parse(textBoxSWLat.Text.Trim(), info) + ((pictureBoxMap.Image.Height - overlayY - deviceHeight) * ratioLatitude); //if (checkBoxNotNorthbound.Checked) //{ // //ToDo: calculate SE Corner //} //else //{ iOpt.SELong = iOpt.NELong; iOpt.SELat = iOpt.SWLat; //} } catch (Exception e) { MessageBox.Show("GPS Data couldn`t be calculated. XML File couldn't be saved!"); throw e; } } else { pictureBoxMap.Image.Save(localFileName, ImageFormat.Png); iOpt.NELong = float.Parse(textBoxNELong.Text.Trim()); iOpt.NELat = float.Parse(textBoxNELat.Text.Trim()); iOpt.SWLong = float.Parse(textBoxSWLong.Text.Trim()); iOpt.SWLat = float.Parse(textBoxSWLat.Text.Trim()); if (checkBoxNotNorthbound.Checked) { iOpt.SELong = float.Parse(textBoxSELong.Text.Trim()); iOpt.SELat = float.Parse(textBoxSELat.Text.Trim()); } else { iOpt.SELong = iOpt.NELong; iOpt.SELat = iOpt.SWLat; } } builder = new StringBuilder(); builder.Append(Environment.CurrentDirectory + @"\Maps"); builder.Append(@"\"); builder.Append(this.textBoxFileName.Text.Trim()); builder.Append(".xml"); this.writeSettingsToXML(builder.ToString(), iOpt); this.textBoxFileDescription.Clear(); this.textBoxFileName.Clear(); }
private void saveGoogleMapToDevice() { if (this.deviceMapDirectory != null) { Object[] obj = new Object[2]; obj[0] = (Object)deviceWidth; obj[1] = (Object)deviceHeight; HtmlDocument doc = webBrowserMap.Document; Object url = webBrowserMap.Document.InvokeScript("loadImageWithParam", obj); StringBuilder builder = new StringBuilder(); builder.Append(this.textBoxFileName.Text); builder.Append(".png"); String localFileName = builder.ToString(); if (this.DownloadFile(url.ToString(), localFileName) > 0) { builder = new StringBuilder(); builder.Append(this.textBoxFileName.Text); builder.Append(".xml"); ImageOptions iOpt = new ImageOptions(); iOpt.Name = this.textBoxFileName.Text.Trim(); iOpt.Description = this.textBoxFileDescription.Text.Trim(); if (webBrowserMap.Document != null) { doc = webBrowserMap.Document; Object temp; temp = doc.InvokeScript("getSWLatitude"); iOpt.SWLat = float.Parse(temp.ToString()); iOpt.SELat = float.Parse(temp.ToString()); temp = doc.InvokeScript("getSWLongitude"); iOpt.SWLong = float.Parse(temp.ToString()); temp = doc.InvokeScript("getNELatitude"); iOpt.NELat = float.Parse(temp.ToString()); temp = doc.InvokeScript("getNELongitude"); iOpt.NELong = float.Parse(temp.ToString()); iOpt.SELong = float.Parse(temp.ToString()); temp = doc.InvokeScript("getZoomLevel"); iOpt.ZoomLevel = int.Parse(temp.ToString()); } this.writeSettingsToXML(builder.ToString(), iOpt); try { if (!rapi.DeviceFileExists(this.deviceMapDirectory)) { rapi.CreateDeviceDirectory(this.deviceMapDirectory); } rapi.CopyFileToDevice(localFileName, this.deviceMapDirectory + @"\" + localFileName, true); rapi.CopyFileToDevice(builder.ToString(), this.deviceMapDirectory + @"\" + localFileName, true); File.Delete(localFileName); File.Delete(builder.ToString()); this.textBoxFileDescription.Clear(); this.textBoxFileName.Clear(); } catch (Exception e) { MessageBox.Show("DirectCopy Not Succesfull. You need To copy manually."); } } } }
private void saveMapToLocalMachine() { if (pictureBoxMap.Image == null) { throw new Exception("No map loaded to be saved."); } StringBuilder builder = new StringBuilder(); builder.Append(Environment.CurrentDirectory + @"\Maps"); builder.Append(@"\"); builder.Append(this.textBoxFileName.Text.Trim()); builder.Append(".png"); String localFileName = builder.ToString(); if (!Directory.Exists(Environment.CurrentDirectory + @"\Maps")) { Directory.CreateDirectory(Environment.CurrentDirectory + @"\Maps"); } ImageOptions iOpt = new ImageOptions(); iOpt.Name = this.textBoxFileName.Text.Trim(); iOpt.Description = this.textBoxFileDescription.Text.Trim(); if (this.checkBoxUseDeviceDimensions.Checked) { //Cut and Save Image Bitmap img = new Bitmap(deviceWidth, deviceHeight); Graphics g = Graphics.FromImage(img); g.DrawImageUnscaledAndClipped(pictureBoxMap.Image, new Rectangle((-1) * overlayX, (-1) * overlayY, deviceWidth + overlayX, deviceHeight + overlayY)); g.Save(); img.Save(localFileName, ImageFormat.Png); try { CultureInfo info = null; if (textBoxNELong.Text.Contains(",")) { info = System.Globalization.CultureInfo.CreateSpecificCulture("de-de"); } else if (textBoxNELong.Text.Contains(".")) { info = System.Globalization.CultureInfo.CreateSpecificCulture("en-us"); } // for now: maps are assumed northbound // otherwise quotients must be differently calculated float deltaLongitude = float.Parse(textBoxNELong.Text.Trim(), info) - float.Parse(textBoxSWLong.Text.Trim(), info); float ratioLongitude = deltaLongitude / pictureBoxMap.Image.Width; float deltaLatitude = float.Parse(textBoxNELat.Text.Trim(), info) - float.Parse(textBoxSWLat.Text.Trim(), info); float ratioLatitude = deltaLatitude / pictureBoxMap.Image.Height; iOpt.NELong = float.Parse(textBoxNELong.Text.Trim(), info) - ((pictureBoxMap.Image.Width - overlayX - deviceWidth) * ratioLongitude); iOpt.NELat = float.Parse(textBoxNELat.Text.Trim(), info) - (overlayY * ratioLatitude); iOpt.SWLong = float.Parse(textBoxSWLong.Text.Trim(), info) + (overlayX * ratioLongitude); iOpt.SWLat = float.Parse(textBoxSWLat.Text.Trim(), info) + ((pictureBoxMap.Image.Height - overlayY - deviceHeight) * ratioLatitude); //if (checkBoxNotNorthbound.Checked) //{ // //ToDo: calculate SE Corner //} //else //{ iOpt.SELong = iOpt.NELong; iOpt.SELat = iOpt.SWLat; //} } catch (Exception e) { MessageBox.Show("GPS Data couldn`t be calculated. XML File couldn't be saved!"); throw e; } } else { pictureBoxMap.Image.Save(localFileName, ImageFormat.Png); iOpt.NELong = float.Parse(textBoxNELong.Text.Trim()); iOpt.NELat = float.Parse(textBoxNELat.Text.Trim()); iOpt.SWLong = float.Parse(textBoxSWLong.Text.Trim()); iOpt.SWLat = float.Parse(textBoxSWLat.Text.Trim()); if (checkBoxNotNorthbound.Checked) { iOpt.SELong = float.Parse(textBoxSELong.Text.Trim()); iOpt.SELat = float.Parse(textBoxSELat.Text.Trim()); } else { iOpt.SELong = iOpt.NELong; iOpt.SELat = iOpt.SWLat; } } builder = new StringBuilder(); builder.Append(Environment.CurrentDirectory + @"\Maps"); builder.Append(@"\"); builder.Append(this.textBoxFileName.Text.Trim()); builder.Append(".xml"); this.writeSettingsToXML(builder.ToString(), iOpt); this.textBoxFileDescription.Clear(); this.textBoxFileName.Clear(); }