16acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*
26acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *  grfmt_imageio.h
36acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *
46acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *
56acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *  Created by Morgan Conbere on 5/17/07.
66acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn *
76acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn */
86acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
96acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifndef _GRFMT_IMAGEIO_H_
106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define _GRFMT_IMAGEIO_H_
116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef HAVE_IMAGEIO
136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "grfmt_base.h"
156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include <ApplicationServices/ApplicationServices.h>
166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennclass GrFmtImageIOReader : public GrFmtReader
186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennpublic:
206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    GrFmtImageIOReader( const char* filename );
226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    ~GrFmtImageIOReader();
236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    bool  ReadData( uchar* data, int step, int color );
256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    bool  ReadHeader();
266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    void  Close();
276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennprotected:
296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CGImageRef imageRef;
316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennclass GrFmtImageIOWriter : public GrFmtWriter
346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennpublic:
366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    GrFmtImageIOWriter( const char* filename );
386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    ~GrFmtImageIOWriter();
396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    bool  WriteImage( const uchar* data, int step,
416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      int width, int height, int depth, int channels );
426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// ImageIO filter factory
456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennclass GrFmtImageIO :public GrFmtFilterFactory
466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennpublic:
486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    GrFmtImageIO();
506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    ~GrFmtImageIO();
516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    bool CheckFile( const char* filename );
536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    GrFmtReader* NewReader( const char* filename );
556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    GrFmtWriter* NewWriter( const char* filename );
566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn};
576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif/*HAVE_IMAGEIO*/
596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif/*_GRFMT_IMAGEIO_H_*/
61