diff options
author | Kinan Hakim <kinan@google.com> | 2015-12-17 13:11:06 +0100 |
---|---|---|
committer | Kinan Hakim <kinan@google.com> | 2015-12-18 10:33:53 +0100 |
commit | 6e09dfbee0b1643a5cb2b32d0399c1a0c69551a0 (patch) | |
tree | df296b288b8669379de737cebc294400593ff3bd /source/dng_simple_image.cpp | |
parent | ffee7a66caebb7027d7591405e8494e3c9e8517e (diff) | |
download | dng_sdk-6e09dfbee0b1643a5cb2b32d0399c1a0c69551a0.tar.gz |
Add Google security patches to dng_sdk
Change-Id: Id7f4dea009b3842f9a00d4a7e80d0bd286547e79
Diffstat (limited to 'source/dng_simple_image.cpp')
-rw-r--r-- | source/dng_simple_image.cpp | 381 |
1 files changed, 184 insertions, 197 deletions
diff --git a/source/dng_simple_image.cpp b/source/dng_simple_image.cpp index 03b5b59..46d0011 100644 --- a/source/dng_simple_image.cpp +++ b/source/dng_simple_image.cpp @@ -1,197 +1,184 @@ -/*****************************************************************************/
-// Copyright 2006-2008 Adobe Systems Incorporated
-// All Rights Reserved.
-//
-// NOTICE: Adobe permits you to use, modify, and distribute this file in
-// accordance with the terms of the Adobe license agreement accompanying it.
-/*****************************************************************************/
-
-/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_simple_image.cpp#1 $ */
-/* $DateTime: 2012/05/30 13:28:51 $ */
-/* $Change: 832332 $ */
-/* $Author: tknoll $ */
-
-/*****************************************************************************/
-
-#include "dng_simple_image.h"
-
-#include "dng_memory.h"
-#include "dng_orientation.h"
-#include "dng_tag_types.h"
-
-/*****************************************************************************/
-
-dng_simple_image::dng_simple_image (const dng_rect &bounds,
- uint32 planes,
- uint32 pixelType,
- dng_memory_allocator &allocator)
-
- : dng_image (bounds,
- planes,
- pixelType)
-
- , fMemory ()
- , fBuffer ()
- , fAllocator (allocator)
-
- {
-
- uint32 pixelSize = TagTypeSize (pixelType);
-
- uint32 bytes = bounds.H () * bounds.W () * planes * pixelSize;
-
- fMemory.Reset (allocator.Allocate (bytes));
-
- fBuffer.fArea = bounds;
-
- fBuffer.fPlane = 0;
- fBuffer.fPlanes = planes;
-
- fBuffer.fRowStep = planes * bounds.W ();
- fBuffer.fColStep = planes;
- fBuffer.fPlaneStep = 1;
-
- fBuffer.fPixelType = pixelType;
- fBuffer.fPixelSize = pixelSize;
-
- fBuffer.fData = fMemory->Buffer ();
-
- }
-
-/*****************************************************************************/
-
-dng_simple_image::~dng_simple_image ()
- {
-
- }
-
-/*****************************************************************************/
-
-dng_image * dng_simple_image::Clone () const
- {
-
- AutoPtr<dng_simple_image> result (new dng_simple_image (Bounds (),
- Planes (),
- PixelType (),
- fAllocator));
-
- result->fBuffer.CopyArea (fBuffer,
- Bounds (),
- 0,
- Planes ());
-
- return result.Release ();
-
- }
-
-/*****************************************************************************/
-
-void dng_simple_image::SetPixelType (uint32 pixelType)
- {
-
- dng_image::SetPixelType (pixelType);
-
- fBuffer.fPixelType = pixelType;
-
- }
-
-/*****************************************************************************/
-
-void dng_simple_image::Trim (const dng_rect &r)
- {
-
- fBounds.t = 0;
- fBounds.l = 0;
-
- fBounds.b = r.H ();
- fBounds.r = r.W ();
-
- fBuffer.fData = fBuffer.DirtyPixel (r.t, r.l);
-
- fBuffer.fArea = fBounds;
-
- }
-
-/*****************************************************************************/
-
-void dng_simple_image::Rotate (const dng_orientation &orientation)
- {
-
- int32 originH = fBounds.l;
- int32 originV = fBounds.t;
-
- int32 colStep = fBuffer.fColStep;
- int32 rowStep = fBuffer.fRowStep;
-
- uint32 width = fBounds.W ();
- uint32 height = fBounds.H ();
-
- if (orientation.FlipH ())
- {
-
- originH += width - 1;
-
- colStep = -colStep;
-
- }
-
- if (orientation.FlipV ())
- {
-
- originV += height - 1;
-
- rowStep = -rowStep;
-
- }
-
- if (orientation.FlipD ())
- {
-
- int32 temp = colStep;
-
- colStep = rowStep;
- rowStep = temp;
-
- width = fBounds.H ();
- height = fBounds.W ();
-
- }
-
- fBuffer.fData = fBuffer.DirtyPixel (originV, originH);
-
- fBuffer.fColStep = colStep;
- fBuffer.fRowStep = rowStep;
-
- fBounds.r = fBounds.l + width;
- fBounds.b = fBounds.t + height;
-
- fBuffer.fArea = fBounds;
-
- }
-
-/*****************************************************************************/
-
-void dng_simple_image::AcquireTileBuffer (dng_tile_buffer &buffer,
- const dng_rect &area,
- bool dirty) const
- {
-
- buffer.fArea = area;
-
- buffer.fPlane = fBuffer.fPlane;
- buffer.fPlanes = fBuffer.fPlanes;
- buffer.fRowStep = fBuffer.fRowStep;
- buffer.fColStep = fBuffer.fColStep;
- buffer.fPlaneStep = fBuffer.fPlaneStep;
- buffer.fPixelType = fBuffer.fPixelType;
- buffer.fPixelSize = fBuffer.fPixelSize;
-
- buffer.fData = (void *) fBuffer.ConstPixel (buffer.fArea.t,
- buffer.fArea.l,
- buffer.fPlane);
-
- buffer.fDirty = dirty;
-
- }
-
-/*****************************************************************************/
+/*****************************************************************************/ +// Copyright 2006-2008 Adobe Systems Incorporated +// All Rights Reserved. +// +// NOTICE: Adobe permits you to use, modify, and distribute this file in +// accordance with the terms of the Adobe license agreement accompanying it. +/*****************************************************************************/ + +/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_simple_image.cpp#1 $ */ +/* $DateTime: 2012/05/30 13:28:51 $ */ +/* $Change: 832332 $ */ +/* $Author: tknoll $ */ + +/*****************************************************************************/ + +#include "dng_simple_image.h" + +#include "dng_memory.h" +#include "dng_orientation.h" +#include "dng_tag_types.h" +#include "dng_tag_values.h" + +/*****************************************************************************/ + +dng_simple_image::dng_simple_image (const dng_rect &bounds, + uint32 planes, + uint32 pixelType, + dng_memory_allocator &allocator) + + : dng_image (bounds, + planes, + pixelType) + + , fMemory () + , fAllocator (allocator) + + { + + uint32 bytes = + ComputeBufferSize (pixelType, bounds.Size (), planes, pad16Bytes); + + fMemory.Reset (allocator.Allocate (bytes)); + + fBuffer = dng_pixel_buffer (bounds, 0, planes, pixelType, pcInterleaved, fMemory->Buffer ()); + + } + +/*****************************************************************************/ + +dng_simple_image::~dng_simple_image () + { + + } + +/*****************************************************************************/ + +dng_image * dng_simple_image::Clone () const + { + + AutoPtr<dng_simple_image> result (new dng_simple_image (Bounds (), + Planes (), + PixelType (), + fAllocator)); + + result->fBuffer.CopyArea (fBuffer, + Bounds (), + 0, + Planes ()); + + return result.Release (); + + } + +/*****************************************************************************/ + +void dng_simple_image::SetPixelType (uint32 pixelType) + { + + dng_image::SetPixelType (pixelType); + + fBuffer.fPixelType = pixelType; + + } + +/*****************************************************************************/ + +void dng_simple_image::Trim (const dng_rect &r) + { + + fBounds.t = 0; + fBounds.l = 0; + + fBounds.b = r.H (); + fBounds.r = r.W (); + + fBuffer.fData = fBuffer.DirtyPixel (r.t, r.l); + + fBuffer.fArea = fBounds; + + } + +/*****************************************************************************/ + +void dng_simple_image::Rotate (const dng_orientation &orientation) + { + + int32 originH = fBounds.l; + int32 originV = fBounds.t; + + int32 colStep = fBuffer.fColStep; + int32 rowStep = fBuffer.fRowStep; + + uint32 width = fBounds.W (); + uint32 height = fBounds.H (); + + if (orientation.FlipH ()) + { + + originH += width - 1; + + colStep = -colStep; + + } + + if (orientation.FlipV ()) + { + + originV += height - 1; + + rowStep = -rowStep; + + } + + if (orientation.FlipD ()) + { + + int32 temp = colStep; + + colStep = rowStep; + rowStep = temp; + + width = fBounds.H (); + height = fBounds.W (); + + } + + fBuffer.fData = fBuffer.DirtyPixel (originV, originH); + + fBuffer.fColStep = colStep; + fBuffer.fRowStep = rowStep; + + fBounds.r = fBounds.l + width; + fBounds.b = fBounds.t + height; + + fBuffer.fArea = fBounds; + + } + +/*****************************************************************************/ + +void dng_simple_image::AcquireTileBuffer (dng_tile_buffer &buffer, + const dng_rect &area, + bool dirty) const + { + + buffer.fArea = area; + + buffer.fPlane = fBuffer.fPlane; + buffer.fPlanes = fBuffer.fPlanes; + buffer.fRowStep = fBuffer.fRowStep; + buffer.fColStep = fBuffer.fColStep; + buffer.fPlaneStep = fBuffer.fPlaneStep; + buffer.fPixelType = fBuffer.fPixelType; + buffer.fPixelSize = fBuffer.fPixelSize; + + buffer.fData = (void *) fBuffer.ConstPixel (buffer.fArea.t, + buffer.fArea.l, + buffer.fPlane); + + buffer.fDirty = dirty; + + } + +/*****************************************************************************/ |