1/* 2 * Copyright 2006, 2007, 2011, Stephan A��mus <superstippi@gmx.de>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5#ifndef EXPORTER_H 6#define EXPORTER_H 7 8 9#include <Entry.h> 10#include <OS.h> 11 12#include "IconBuild.h" 13 14 15class BPositionIO; 16class Document; 17 18 19_BEGIN_ICON_NAMESPACE 20 class Icon; 21_END_ICON_NAMESPACE 22 23_USING_ICON_NAMESPACE 24 25 26class Exporter { 27 public: 28 Exporter(); 29 virtual ~Exporter(); 30 31 status_t Export(Document* document, 32 const entry_ref& ref); 33 34 virtual status_t Export(const Icon* icon, 35 BPositionIO* stream) = 0; 36 37 virtual const char* MIMEType() = 0; 38 39 void SetSelfDestroy(bool selfDestroy); 40 41 void WaitForExportThread(); 42 43 private: 44 static int32 _ExportThreadEntry(void* cookie); 45 int32 _ExportThread(); 46 status_t _Export(const Icon* icon, 47 const entry_ref* docRef); 48 49 Document* fDocument; 50 Icon* fClonedIcon; 51 entry_ref fRef; 52 thread_id fExportThread; 53 bool fSelfDestroy; 54}; 55 56#endif // EXPORTER_H 57