/**************************************************************
 *
 * 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.
 *
 *************************************************************/


#include "precompiled_rptxml.hxx"

#include "xmlstrings.hrc"

namespace rptxml
{
#include "stringconstants.cxx"
IMPLEMENT_CONSTASCII_USTRING(SERVICE_SETTINGSIMPORTER			, "com.sun.star.comp.Report.XMLOasisSettingsImporter");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_STYLESIMPORTER			    , "com.sun.star.comp.Report.XMLOasisStylesImporter");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_CONTENTIMPORTER			, "com.sun.star.comp.Report.XMLOasisContentImporter");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_IMPORTFILTER   			, "com.sun.star.document.ImportFilter");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_METAIMPORTER			    , "com.sun.star.comp.Report.XMLOasisMetaImporter");

IMPLEMENT_CONSTASCII_USTRING(PROPERTY_BORDERLEFT   			    , "BorderLeft");
IMPLEMENT_CONSTASCII_USTRING(PROPERTY_BORDERRIGHT   			, "BorderRight");
IMPLEMENT_CONSTASCII_USTRING(PROPERTY_BORDERTOP   			    , "BorderTop");
IMPLEMENT_CONSTASCII_USTRING(PROPERTY_BORDERBOTTOM   			, "BorderBottom");
}
