/**************************************************************
 *
 * 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 ------------------------------------------------------------------
#include <svx/dialogs.hrc>
 // pragma -------------------------------------------------------------------

// Strings for Draw dialogs -------------------------------------------------
String RID_SVX_3D_CREATE_LATHE
{
	Text [ en-US ] = "Create 3D rotation object" ;
};
String RID_SVX_3D_UNDO_EXCHANGE_PASTE
{
	Text [ en-US ] = "Insert object(s)" ;
};
String RID_SVX_3D_UNDO_SEGMENTS
{
	Text [ en-US ] = "Number of segments" ;
};
String RID_SVX_3D_UNDO_DEEPTH
{
	Text [ en-US ] = "Object depth" ;
};
String RID_SVX_3D_UNDO_FOCAL
{
	Text [ en-US ] = "Focal length" ;
};
String RID_SVX_3D_UNDO_CAMPOS
{
	Text [ en-US ] = "Camera position" ;
};
String RID_SVX_3D_UNDO_ROTATE
{
	Text [ en-US ] = "Rotate 3D object" ;
};
String RID_SVX_3D_UNDO_EXTRUDE
{
	Text [ en-US ] = "Create extrusion object" ;
};
String RID_SVX_3D_UNDO_LATHE
{
	Text [ en-US ] = "Create rotation object" ;
};
String RID_SVX_3D_UNDO_BREAK_LATHE
{
	Text [ en-US ] = "Split 3D object" ;
};
String RID_SVX_3D_UNDO_ATTRIBUTES
{
	Text [ en-US ] = "3D Attributes" ;
};

// ********************************************************************** EOF
