// CodeGear C++Builder
// Copyright (c) 1995, 2015 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'jpegfilt.pas' rev: 30.00 (Windows)

#ifndef JpegfiltHPP
#define JpegfiltHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>
#include <SysInit.hpp>
#include <Winapi.Windows.hpp>
#include <Vcl.Graphics.hpp>
#include <System.Classes.hpp>
#include <System.SysUtils.hpp>
#include <imageenproc.hpp>
#include <imageenio.hpp>
#include <hyiedefs.hpp>
#include <hyieutils.hpp>

//-- user supplied -----------------------------------------------------------

namespace Jpegfilt
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS EIEJpegException;
//-- type declarations -------------------------------------------------------
enum DECLSPEC_DENUM IEJ_COLOR_SPACE : unsigned int { IEJCS_UNKNOWN, IEJCS_GRAYSCALE, IEJCS_RGB, IEJCS_YCbCr, IEJCS_CMYK, IEJCS_YCCK };

enum DECLSPEC_DENUM IEJ_DCT_METHOD : unsigned int { IEJDCT_ISLOW, IEJDCT_IFAST, IEJDCT_FLOAT };

enum DECLSPEC_DENUM IEJ_DITHER_MODE : unsigned int { IEJDITHER_NONE, IEJDITHER_ORDERED, IEJDITHER_FS };

typedef int IEJCOPY_OPTION;

#pragma pack(push,4)
class PASCALIMPLEMENTATION EIEJpegException : public System::Sysutils::Exception
{
	typedef System::Sysutils::Exception inherited;
	
public:
	/* Exception.Create */ inline __fastcall EIEJpegException(const System::UnicodeString Msg) : System::Sysutils::Exception(Msg) { }
	/* Exception.CreateFmt */ inline __fastcall EIEJpegException(const System::UnicodeString Msg, System::TVarRec const *Args, const int Args_High) : System::Sysutils::Exception(Msg, Args, Args_High) { }
	/* Exception.CreateRes */ inline __fastcall EIEJpegException(NativeUInt Ident)/* overload */ : System::Sysutils::Exception(Ident) { }
	/* Exception.CreateRes */ inline __fastcall EIEJpegException(System::PResStringRec ResStringRec)/* overload */ : System::Sysutils::Exception(ResStringRec) { }
	/* Exception.CreateResFmt */ inline __fastcall EIEJpegException(NativeUInt Ident, System::TVarRec const *Args, const int Args_High)/* overload */ : System::Sysutils::Exception(Ident, Args, Args_High) { }
	/* Exception.CreateResFmt */ inline __fastcall EIEJpegException(System::PResStringRec ResStringRec, System::TVarRec const *Args, const int Args_High)/* overload */ : System::Sysutils::Exception(ResStringRec, Args, Args_High) { }
	/* Exception.CreateHelp */ inline __fastcall EIEJpegException(const System::UnicodeString Msg, int AHelpContext) : System::Sysutils::Exception(Msg, AHelpContext) { }
	/* Exception.CreateFmtHelp */ inline __fastcall EIEJpegException(const System::UnicodeString Msg, System::TVarRec const *Args, const int Args_High, int AHelpContext) : System::Sysutils::Exception(Msg, Args, Args_High, AHelpContext) { }
	/* Exception.CreateResHelp */ inline __fastcall EIEJpegException(NativeUInt Ident, int AHelpContext)/* overload */ : System::Sysutils::Exception(Ident, AHelpContext) { }
	/* Exception.CreateResHelp */ inline __fastcall EIEJpegException(System::PResStringRec ResStringRec, int AHelpContext)/* overload */ : System::Sysutils::Exception(ResStringRec, AHelpContext) { }
	/* Exception.CreateResFmtHelp */ inline __fastcall EIEJpegException(System::PResStringRec ResStringRec, System::TVarRec const *Args, const int Args_High, int AHelpContext)/* overload */ : System::Sysutils::Exception(ResStringRec, Args, Args_High, AHelpContext) { }
	/* Exception.CreateResFmtHelp */ inline __fastcall EIEJpegException(NativeUInt Ident, System::TVarRec const *Args, const int Args_High, int AHelpContext)/* overload */ : System::Sysutils::Exception(Ident, Args, Args_High, AHelpContext) { }
	/* Exception.Destroy */ inline __fastcall virtual ~EIEJpegException(void) { }
	
};

#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------
static const System::Int8 IEJXFORM_NONE = System::Int8(0x0);
static const System::Int8 IEJXFORM_CUT = System::Int8(0x1);
static const System::Int8 IEJXFORM_FLIP_H = System::Int8(0x2);
static const System::Int8 IEJXFORM_FLIP_V = System::Int8(0x3);
static const System::Int8 IEJXFORM_TRANSPOSE = System::Int8(0x4);
static const System::Int8 IEJXFORM_TRANSVERSE = System::Int8(0x5);
static const System::Int8 IEJXFORM_ROT_90 = System::Int8(0x6);
static const System::Int8 IEJXFORM_ROT_180 = System::Int8(0x7);
static const System::Int8 IEJXFORM_ROT_270 = System::Int8(0x8);
extern DELPHI_PACKAGE System::LongBool __turboFloat;
static const System::Byte M_SOF0 = System::Byte(0xc0);
static const System::Byte M_SOF1 = System::Byte(0xc1);
static const System::Byte M_SOF2 = System::Byte(0xc2);
static const System::Byte M_SOF3 = System::Byte(0xc3);
static const System::Byte M_SOF5 = System::Byte(0xc5);
static const System::Byte M_SOF6 = System::Byte(0xc6);
static const System::Byte M_SOF7 = System::Byte(0xc7);
static const System::Byte M_JPG = System::Byte(0xc8);
static const System::Byte M_SOF9 = System::Byte(0xc9);
static const System::Byte M_SOF10 = System::Byte(0xca);
static const System::Byte M_SOF11 = System::Byte(0xcb);
static const System::Byte M_SOF13 = System::Byte(0xcd);
static const System::Byte M_SOF14 = System::Byte(0xce);
static const System::Byte M_SOF15 = System::Byte(0xcf);
static const System::Byte M_DHT = System::Byte(0xc4);
static const System::Byte M_DAC = System::Byte(0xcc);
static const System::Byte M_RST0 = System::Byte(0xd0);
static const System::Byte M_RST1 = System::Byte(0xd1);
static const System::Byte M_RST2 = System::Byte(0xd2);
static const System::Byte M_RST3 = System::Byte(0xd3);
static const System::Byte M_RST4 = System::Byte(0xd4);
static const System::Byte M_RST5 = System::Byte(0xd5);
static const System::Byte M_RST6 = System::Byte(0xd6);
static const System::Byte M_RST7 = System::Byte(0xd7);
static const System::Byte M_SOI = System::Byte(0xd8);
static const System::Byte M_EOI = System::Byte(0xd9);
static const System::Byte M_SOS = System::Byte(0xda);
static const System::Byte M_DQT = System::Byte(0xdb);
static const System::Byte M_DNL = System::Byte(0xdc);
static const System::Byte M_DRI = System::Byte(0xdd);
static const System::Byte M_DHP = System::Byte(0xde);
static const System::Byte M_EXP = System::Byte(0xdf);
static const System::Byte M_APP0 = System::Byte(0xe0);
static const System::Byte M_APP1 = System::Byte(0xe1);
static const System::Byte M_APP2 = System::Byte(0xe2);
static const System::Byte M_APP3 = System::Byte(0xe3);
static const System::Byte M_APP4 = System::Byte(0xe4);
static const System::Byte M_APP5 = System::Byte(0xe5);
static const System::Byte M_APP6 = System::Byte(0xe6);
static const System::Byte M_APP7 = System::Byte(0xe7);
static const System::Byte M_APP8 = System::Byte(0xe8);
static const System::Byte M_APP9 = System::Byte(0xe9);
static const System::Byte M_APP10 = System::Byte(0xea);
static const System::Byte M_APP11 = System::Byte(0xeb);
static const System::Byte M_APP12 = System::Byte(0xec);
static const System::Byte M_APP13 = System::Byte(0xed);
static const System::Byte M_APP14 = System::Byte(0xee);
static const System::Byte M_APP15 = System::Byte(0xef);
static const System::Byte M_JPG0 = System::Byte(0xf0);
static const System::Byte M_JPG1 = System::Byte(0xf1);
static const System::Byte M_JPG2 = System::Byte(0xf2);
static const System::Byte M_JPG3 = System::Byte(0xf3);
static const System::Byte M_JPG4 = System::Byte(0xf4);
static const System::Byte M_JPG5 = System::Byte(0xf5);
static const System::Byte M_JPG6 = System::Byte(0xf6);
static const System::Byte M_JPG7 = System::Byte(0xf7);
static const System::Byte M_JPG8 = System::Byte(0xf8);
static const System::Byte M_JPG9 = System::Byte(0xf9);
static const System::Byte M_JPG10 = System::Byte(0xfa);
static const System::Byte M_JPG11 = System::Byte(0xfb);
static const System::Byte M_JPG12 = System::Byte(0xfc);
static const System::Byte M_JPG13 = System::Byte(0xfd);
static const System::Byte M_COM = System::Byte(0xfe);
static const System::Int8 M_TEM = System::Int8(0x1);
static const System::Int8 M_BYPASS = System::Int8(0x0);
extern DELPHI_PACKAGE int __fastcall ReadJpegStream(System::Classes::TStream* Stream, System::Classes::TStream* TableStream, Hyieutils::TIEBitmap* Bitmap, Imageenio::TIOParamsVals* &IOParams, Hyiedefs::TProgressRec &xProgress, bool Preview, bool Raw, bool ReadMetaTags, bool invertCMYK, bool freeICC, bool loadicc, int MaxRows, bool NativeFormat);
extern DELPHI_PACKAGE void __fastcall WriteJpegStream(System::Classes::TStream* Stream, Hyieutils::TIEBitmap* bitmap, Imageenio::TIOParamsVals* &IOParams, Hyiedefs::TProgressRec &xProgress);
extern DELPHI_PACKAGE void __fastcall IEJpegLosslessTransform(System::Classes::TStream* InStream, System::Classes::TStream* OutStream, Hyiedefs::TProgressRec &xProgress, int Transform, bool GrayScale, int CopyMarkers, const System::Types::TRect &CutRect, bool updateEXIF);
extern DELPHI_PACKAGE __int64 __fastcall JpegTryStream(System::Classes::TStream* Stream, bool find);
extern DELPHI_PACKAGE bool __fastcall IEJpegInjectIPTC(System::Classes::TStream* InputStream, System::Classes::TStream* OutputStream, Hyieutils::TIEIPTCInfoList* iptc, Hyiedefs::TProgressRec &xProgress);
extern DELPHI_PACKAGE bool __fastcall IEJpegInjectEXIF(System::Classes::TStream* XInputStream, System::Classes::TStream* XOutputStream, Imageenio::TIOParamsVals* exif, Hyiedefs::TProgressRec &xProgress);
extern DELPHI_PACKAGE int __fastcall IEGetJpegQuality(System::Classes::TStream* InputStream, void * &QTables);
extern DELPHI_PACKAGE int __fastcall IEGetJpegLength(System::Classes::TStream* InputStream);
extern DELPHI_PACKAGE void __fastcall IEGetJpegICC(System::Classes::TStream* InputStream, Imageenio::TIOParamsVals* Params);
extern DELPHI_PACKAGE void __fastcall IEGetJPEGSize(const System::UnicodeString aFileName, int &aWidth, int &aHeight);
}	/* namespace Jpegfilt */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_JPEGFILT)
using namespace Jpegfilt;
#endif
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// JpegfiltHPP
