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

//=============================================================================

module com {   module sun {   module star {   module document {

//=============================================================================

/** specifies whether the document printer metric is used.

	@since OOo 1.1.2
*/
published constants PrinterIndependentLayout
{
    /** use printer-dependent metrics for layout */
    const short DISABLED = 1;

    /** use printer-independent metrics for layout, 
        assuming a generic 600dpi printer */
    const short LOW_RESOLUTION = 2;
    
    /** @deprecated ENABLED changed to LOW_RESOLUTION, 
                    to distinguish from HIGH_RESOLUTION */
    const short ENABLED = LOW_RESOLUTION;

    /** use printer-independent metrics for layout, 
        assuming a generic high-resolution printer (4800dpi) */
    const short HIGH_RESOLUTION = 3;

    /** [future:] use printer-independent-layout settings from parent object
    const short LIKE_PARENT = 4;
     */
};
    
//=============================================================================

}; }; }; };

#endif
