Changeset 11519
- Timestamp:
- 05/14/07 21:38:51 (2 years ago)
- Files:
-
- branches/1.4/gdal/frmts/vrt/vrtsources.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/1.4/gdal/frmts/vrt/vrtsources.cpp
r11299 r11519 264 264 /************************************************************************/ 265 265 /* SrcToDst() */ 266 /* */ 267 /* Note: this is a no-op if the dst window is -1,-1,-1,-1. */ 266 268 /************************************************************************/ 267 269 … … 276 278 /************************************************************************/ 277 279 /* DstToSrc() */ 280 /* */ 281 /* Note: this is a no-op if the dst window is -1,-1,-1,-1. */ 278 282 /************************************************************************/ 279 283 … … 299 303 300 304 { 305 int bSrcWinSet = nSrcXOff != -1 || nSrcXSize != -1 306 || nSrcYOff != -1 || nSrcYSize != -1; 307 int bDstWinSet = nDstXOff != -1 || nDstXSize != -1 308 || nDstYOff != -1 || nDstYSize != -1; 309 310 CPLAssert( bSrcWinSet == bDstWinSet ); 311 301 312 /* -------------------------------------------------------------------- */ 302 313 /* If the input window completely misses the portion of the */ 303 314 /* virtual dataset provided by this source we have nothing to do. */ 304 315 /* -------------------------------------------------------------------- */ 305 if( nXOff > nDstXOff + nDstXSize 306 || nYOff > nDstYOff + nDstYSize 307 || nXOff + nXSize < nDstXOff 308 || nYOff + nYSize < nDstYOff ) 309 return FALSE; 316 if( bDstWinSet ) 317 { 318 if( nXOff > nDstXOff + nDstXSize 319 || nYOff > nDstYOff + nDstYSize 320 || nXOff + nXSize < nDstXOff 321 || nYOff + nYSize < nDstYOff ) 322 return FALSE; 323 } 310 324 311 325 /* -------------------------------------------------------------------- */ … … 328 342 int nRYSize = nYSize; 329 343 330 if( nRXOff < nDstXOff ) 331 { 332 nRXSize = nRXSize + nRXOff - nDstXOff; 333 nRXOff = nDstXOff; 334 bModifiedX = TRUE; 335 } 336 337 if( nRYOff < nDstYOff ) 338 { 339 nRYSize = nRYSize + nRYOff - nDstYOff; 340 nRYOff = nDstYOff; 341 bModifiedY = TRUE; 342 } 343 344 if( nRXOff + nRXSize > nDstXOff + nDstXSize ) 345 { 346 nRXSize = nDstXOff + nDstXSize - nRXOff; 347 bModifiedX = TRUE; 348 } 349 350 if( nRYOff + nRYSize > nDstYOff + nDstYSize ) 351 { 352 nRYSize = nDstYOff + nDstYSize - nRYOff; 353 bModifiedY = TRUE; 344 345 if( bDstWinSet ) 346 { 347 if( nRXOff < nDstXOff ) 348 { 349 nRXSize = nRXSize + nRXOff - nDstXOff; 350 nRXOff = nDstXOff; 351 bModifiedX = TRUE; 352 } 353 354 if( nRYOff < nDstYOff ) 355 { 356 nRYSize = nRYSize + nRYOff - nDstYOff; 357 nRYOff = nDstYOff; 358 bModifiedY = TRUE; 359 } 360 361 if( nRXOff + nRXSize > nDstXOff + nDstXSize ) 362 { 363 nRXSize = nDstXOff + nDstXSize - nRXOff; 364 bModifiedX = TRUE; 365 } 366 367 if( nRYOff + nRYSize > nDstYOff + nDstYSize ) 368 { 369 nRYSize = nDstYOff + nDstYSize - nRYOff; 370 bModifiedY = TRUE; 371 } 354 372 } 355 373
