1 /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */ 2 3 /* libmwaw 4 * Version: MPL 2.0 / LGPLv2+ 5 * 6 * The contents of this file are subject to the Mozilla Public License Version 7 * 2.0 (the "License"); you may not use this file except in compliance with 8 * the License or as specified alternatively below. You may obtain a copy of 9 * the License at http://www.mozilla.org/MPL/ 10 * 11 * Software distributed under the License is distributed on an "AS IS" basis, 12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 13 * for the specific language governing rights and limitations under the 14 * License. 15 * 16 * Major Contributor(s): 17 * Copyright (C) 2002 William Lachance (wrlach@gmail.com) 18 * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net) 19 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch) 20 * Copyright (C) 2006, 2007 Andrew Ziem 21 * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr) 22 * 23 * 24 * All Rights Reserved. 25 * 26 * For minor contributions see the git repository. 27 * 28 * Alternatively, the contents of this file may be used under the terms of 29 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"), 30 * in which case the provisions of the LGPLv2+ are applicable 31 * instead of those above. 32 */ 33 34 #ifndef PIXELPAINT_PARSER 35 # define PIXELPAINT_PARSER 36 37 #include <string> 38 #include <vector> 39 40 #include <librevenge/librevenge.h> 41 42 #include "MWAWDebug.hxx" 43 #include "MWAWInputStream.hxx" 44 45 #include "MWAWParser.hxx" 46 47 namespace PixelPaintParserInternal 48 { 49 struct State; 50 } 51 52 /** \brief the main class to read a PixelPaint file or a PNTG file 53 * 54 */ 55 class PixelPaintParser final : public MWAWGraphicParser 56 { 57 public: 58 //! constructor 59 PixelPaintParser(MWAWInputStreamPtr const &input, MWAWRSRCParserPtr const &rsrcParser, MWAWHeader *header); 60 //! destructor 61 ~PixelPaintParser() final; 62 63 //! checks if the document header is correct (or not) 64 bool checkHeader(MWAWHeader *header, bool strict=false) final; 65 66 // the main parse function 67 void parse(librevenge::RVNGDrawingInterface *documentInterface) final; 68 69 protected: 70 //! inits all internal variables 71 void init(); 72 73 //! creates the listener which will be associated to the document 74 void createDocument(librevenge::RVNGDrawingInterface *documentInterface); 75 76 protected: 77 //! finds the different objects zones 78 bool createZones(); 79 80 // Intermediate level 81 82 //! try to read the v1 file header: bitmap size + some windows dimension + preferences 83 bool readFileHeaderV1(bool onlyCheck=false); 84 //! try to read the v2 file header: unknown 85 bool readFileHeaderV2(bool onlyCheck=false); 86 //! try to read the color map 87 bool readColorMap(bool onlyCheck=false); 88 //! try to read the color map 89 bool readPatternMap(bool onlyCheck=false); 90 //! try to read a bitmap(v1) 91 bool readBitmapV1(bool onlyCheck=false); 92 //! try to read a bitmap(v2) 93 bool readBitmapV2(bool onlyCheck=false); 94 //! try to send a bitmap 95 bool sendBitmap(); 96 97 // 98 // data 99 // 100 //! the state 101 std::shared_ptr<PixelPaintParserInternal::State> m_state; 102 }; 103 #endif 104 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: 105