/**************************************************************
 * 
 * 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_drawing_EnhancedCustomShapeSegmentInformationCommand_idl__
#define __com_sun_star_drawing_EnhancedCustomShapeSegmentInformationCommand_idl__
 
 
//============================================================================= 
 
module com {  module sun {  module star {  module drawing {  
 
//============================================================================= 
 
/** 
 */
constants EnhancedCustomShapeSegmentCommand
{ 
	/**
	 */
	const short UNKNOWN = 0;

	/**
	 */
	const short MOVETO = 1;
 
	/**
	 */
	const short LINETO = 2;
 
	/**
	 */
	const short CURVETO = 3;
 
	/**
	 */
	const short CLOSESUBPATH = 4;

	/**
	 */
	const short ENDSUBPATH = 5;

	/**
	 */
	const short NOFILL = 6;

	/**
	 */
	const short NOSTROKE = 7;

	/**
	 */
	const short ANGLEELLIPSETO = 8;

	/**
	 */
	const short ANGLEELLIPSE = 9;

	/**
	 */
	const short ARCTO = 10;

	/**
	 */
	const short ARC = 11;

	/**
	 */
	const short CLOCKWISEARCTO = 12;

	/**
	 */
	const short CLOCKWISEARC = 13;

	/**
	 */
	const short ELLIPTICALQUADRANTX = 14;

	/**
	 */
	const short ELLIPTICALQUADRANTY = 15;

	/**
	 */
	const short QUADRATICCURVETO = 16;
}; 
 
//============================================================================= 
 
}; }; }; };
 
#endif 

