/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef __SERIALIZATION_HXX #define __SERIALIZATION_HXX #include #include #include #include #include #include #include #include #include namespace CSS = com::sun::star; /** Serialize an XObject */ typedef std::map PropMap; class CSerialization { protected: CSS::uno::Reference< CSS::xml::dom::XDocumentFragment > m_aFragment; PropMap m_properties; public: virtual ~CSerialization() {} /** sets the XObject that is to serialized */ virtual void setSource(const CSS::uno::Reference< CSS::xml::dom::XDocumentFragment >& aFragment) { m_aFragment = aFragment; } /** set the properties from the submission element that control aspects of the serialization eachs serialization may support individual properties */ void setProperties(const CSS::uno::Sequence< CSS::beans::NamedValue >& props) { m_properties.clear(); rtl::OUString aValue; for (sal_Int32 i=0; i>= aValue) m_properties.insert(PropMap::value_type(props[i].Name, aValue)); } } /** start the serialization process */ virtual void serialize()=0; /** get the serialized bytes. reads up to buffer->getLength() bytes and returns the number of bytes read. returns -1 on error */ virtual CSS::uno::Reference< CSS::io::XInputStream > getInputStream() = 0; }; #endif