scalebar_miles_patch.diff

last diff had a small logic error in it - Tim Sutton, 2007-12-02 09:55 AM

Download (3.36 KB)

View differences:

src/plugins/scale_bar/plugin.cpp (cópia de trabalho)
162 162
  switch (myUnits)
163 163
  {
164 164
      case 0: myPluginGui->getSpinSize()->setSuffix(tr(" metres/km")); break;
165
      case 1: myPluginGui->getSpinSize()->setSuffix(tr(" feet")); break;
165
      case 1: myPluginGui->getSpinSize()->setSuffix(tr(" feet/miles")); break;
166 166
      case 2: myPluginGui->getSpinSize()->setSuffix(tr(" degrees")); break;
167 167
      default: std::cout << "Error: not picked up map units - actual value = " << myUnits << std::endl;
168 168
  };
......
237 237
    QString myScaleBarUnitLabel;
238 238
    switch (myMapUnits)
239 239
    {
240
    case QGis::METERS: 
241
      if (myActualSize > 1000.0)
242
      {
243
	myScaleBarUnitLabel=tr(" km");
244
	myActualSize = myActualSize/1000;
245
      }
246
      else if (myActualSize < 0.01)
247
      {
248
	myScaleBarUnitLabel=tr(" mm");
249
	myActualSize = myActualSize*1000;
250
      }
251
      else if (myActualSize < 0.1)
252
      {
253
        myScaleBarUnitLabel=tr(" cm");
254
        myActualSize = myActualSize*100;
255
      }
256
      else
257
	myScaleBarUnitLabel=tr(" m"); 
258
      break;
259
    case QGis::FEET:
260
      if (myActualSize == 1.0)
261
	myScaleBarUnitLabel=tr(" foot"); 
262
      else
263
	myScaleBarUnitLabel=tr(" feet"); 
264
      break;
265
    case QGis::DEGREES:
266
      if (myActualSize == 1.0)
267
	myScaleBarUnitLabel=tr(" degree"); 
268
      else
269
	myScaleBarUnitLabel=tr(" degrees"); 
270
      break;
271
    case QGis::UNKNOWN:
272
      myScaleBarUnitLabel=tr(" unknown");
273
    default: 
274
      std::cout << "Error: not picked up map units - actual value = " 
275
		<< myMapUnits << std::endl;
240
      case QGis::METERS: 
241
        if (myActualSize > 1000.0)
242
        {
243
          myScaleBarUnitLabel=tr(" km");
244
          myActualSize = myActualSize/1000;
245
        }
246
        else if (myActualSize < 0.01)
247
        {
248
          myScaleBarUnitLabel=tr(" mm");
249
          myActualSize = myActualSize*1000;
250
        }
251
        else if (myActualSize < 0.1)
252
        {
253
          myScaleBarUnitLabel=tr(" cm");
254
          myActualSize = myActualSize*100;
255
        }
256
        else
257
          myScaleBarUnitLabel=tr(" m"); 
258
        break;
259
      case QGis::FEET:
260
        if (myActualSize > 5280.0) //5280 feet to the mile
261
        {
262
          myScaleBarUnitLabel=tr(" miles");
263
          myActualSize = myActualSize/5280;
264
        }
265
        else if (myActualSize == 5280.0) //5280 feet to the mile
266
        {
267
          myScaleBarUnitLabel=tr(" mile");
268
          myActualSize = myActualSize/5280;
269
        }
270
        else if (myActualSize < 1)
271
        {
272
          myScaleBarUnitLabel=tr(" inches");
273
          myActualSize = myActualSize*12;
274
        }
275
        else if (myActualSize == 1.0)
276
        {
277
          myScaleBarUnitLabel=tr(" foot"); 
278
        }
279
        else
280
        {
281
          myScaleBarUnitLabel=tr(" feet"); 
282
        }
283
        break;
284
      case QGis::DEGREES:
285
        if (myActualSize == 1.0)
286
          myScaleBarUnitLabel=tr(" degree"); 
287
        else
288
          myScaleBarUnitLabel=tr(" degrees"); 
289
        break;
290
      case QGis::UNKNOWN:
291
        myScaleBarUnitLabel=tr(" unknown");
292
      default: 
293
        std::cout << "Error: not picked up map units - actual value = " 
294
          << myMapUnits << std::endl;
276 295
    };
277 296

  
278 297
    //Set font and calculate width of unit label