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

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

/** These constants determine some extra ways how the primitive color
    is combined with the background.<p>

    @see <type>CompositeOperation</type>

    Please refer to the PDF specification for explanations of this
    constants.<p>
 */
constants BlendMode
{
    const byte NORMAL      = 0;
    const byte MULTIPLY    = 1;
    const byte SCREEN      = 2;
    const byte OVERLAY     = 3;
    const byte DARKEN      = 4;
    const byte LIGHTEN     = 5;
    const byte COLOR_DODGE = 6;
    const byte COLOR_BURN  = 7;
    const byte HARD_LIGHT  = 8;
    const byte SOFT_LIGHT  = 9;
    const byte DIFFERENCE  = 10;
    const byte EXCLUSION   = 11;
    const byte HUE         = 12;
    const byte SATURATION  = 13;
    const byte COLOR       = 14;
    const byte LUMINOSITY  = 15;
};

}; }; }; };

#endif
