/**************************************************************
 *
 * 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 __com_sun_star_rendering_EmphasisMark_idl__
#define __com_sun_star_rendering_EmphasisMark_idl__

module com { module sun { module star { module rendering {

/** These constants control the automatic rendering of emphasis marks.<p>

	These constants control the automatic rendering of emphasis marks
	for a given font.<p>

    @since OpenOffice 2.0
 */
constants EmphasisMark
{
    /// No automatic emphasis marks
    const byte NONE = 0;

	//-------------------------------------------------------------------------

    /// Automatic emphasis marks as dots above the glyphs
    const byte DOT_ABOVE = 1;

	//-------------------------------------------------------------------------

    /// Automatic emphasis marks as dots below the glyphs
    const byte DOT_BELOW = 2;

	//-------------------------------------------------------------------------

    /// Automatic emphasis marks as circles (unfilled outlines) above the glyphs
    const byte CIRCLE_ABOVE = 3;

	//-------------------------------------------------------------------------

    /// Automatic emphasis marks as circles (unfilled outlines) below the glyphs
    const byte CIRCLE_BELOW = 4;

	//-------------------------------------------------------------------------

    /// Automatic emphasis marks as discs (filled circles) above the glyphs
    const byte DISC_ABOVE = 5;

	//-------------------------------------------------------------------------

    /// Automatic emphasis marks as discs (filled circles) below the glyphs
    const byte DISC_BELOW = 6;

	//-------------------------------------------------------------------------

    /// Automatic emphasis marks as accent marks above the glyphs
    const byte ACCENT_ABOVE = 7;

	//-------------------------------------------------------------------------

    /// Automatic emphasis marks as accent marks below the glyphs
    const byte ACCENT_BELOW = 8;
};

}; }; }; };

#endif
