18e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/*****************************************************************************/
28e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener// Copyright 2006-2008 Adobe Systems Incorporated
38e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener// All Rights Reserved.
48e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener//
58e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener// NOTICE:  Adobe permits you to use, modify, and distribute this file in
68e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener// accordance with the terms of the Adobe license agreement accompanying it.
78e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/*****************************************************************************/
88e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
98e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_simple_image.h#1 $ */
108e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/* $DateTime: 2012/05/30 13:28:51 $ */
118e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/* $Change: 832332 $ */
128e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/* $Author: tknoll $ */
138e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
148e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/*****************************************************************************/
158e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
168e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener#ifndef __dng_simple_image__
178e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener#define __dng_simple_image__
188e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
198e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/*****************************************************************************/
208e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
218e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener#include "dng_auto_ptr.h"
228e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener#include "dng_image.h"
238e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener#include "dng_pixel_buffer.h"
248e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
258e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/*****************************************************************************/
268e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
278e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/// dng_image derived class with simple Trim and Rotate functionality.
288e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
298e8939fc10ad63576a2785ba1333a23726b7e164Florian Krienerclass dng_simple_image : public dng_image
308e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener	{
318e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
328e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener	protected:
338e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
348e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		dng_pixel_buffer fBuffer;
358e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
368e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		AutoPtr<dng_memory_block> fMemory;
378e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
388e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		dng_memory_allocator &fAllocator;
398e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
408e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener	public:
418e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
428e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		dng_simple_image (const dng_rect &bounds,
438e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener				  		  uint32 planes,
448e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener				  		  uint32 pixelType,
458e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener				  		  dng_memory_allocator &allocator);
468e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
478e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		virtual ~dng_simple_image ();
488e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
498e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		virtual dng_image * Clone () const;
508e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
518e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		/// Setter for pixel type.
528e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
538e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		virtual void SetPixelType (uint32 pixelType);
548e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
558e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		/// Trim image data outside of given bounds. Memory is not reallocated or freed.
568e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
578e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		virtual void Trim (const dng_rect &r);
588e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
598e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		/// Rotate image according to orientation.
608e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
618e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		virtual void Rotate (const dng_orientation &orientation);
628e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
638e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		/// Get the buffer for direct processing. (Unique to dng_simple_image.)
648e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
658e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		void GetPixelBuffer (dng_pixel_buffer &buffer)
668e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener			{
678e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener			buffer = fBuffer;
688e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener			}
698e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
708e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener	protected:
718e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
728e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener		virtual void AcquireTileBuffer (dng_tile_buffer &buffer,
738e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener										const dng_rect &area,
748e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener										bool dirty) const;
758e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
768e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener	};
778e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
788e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/*****************************************************************************/
798e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
808e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener#endif
818e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener
828e8939fc10ad63576a2785ba1333a23726b7e164Florian Kriener/*****************************************************************************/
83