# RenderingMode.java

    /*
     * 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.
     */
    package org.apache.pdfbox.pdmodel.graphics.state;

    /**
     * Text Rendering Mode.
     *
     * @author John Hewson
     */
    public enum RenderingMode
    {
        /**
         * Fill text.
         */
        FILL(0),

        /**
         * Stroke text.
         */
        STROKE(1),

        /**
         * Fill, then stroke text.
         */
        FILL_STROKE(2),

        /**
         * Neither fill nor stroke text (invisible)
         */
        NEITHER(3),

        /**
         * Fill text and add to path for clipping.
         */
        FILL_CLIP(4),

        /**
         * Stroke text and add to path for clipping.
         */
        STROKE_CLIP(5),

        /**
         * Fill, then stroke text and add to path for clipping.
         */
        FILL_STROKE_CLIP(6),

        /**
         * Add text to path for clipping.
         */
        NEITHER_CLIP(7);

        private static final RenderingMode[] VALUES = RenderingMode.values();

        public static RenderingMode fromInt(int value)
        {
            return VALUES[value];
        }

        private final int value;

        RenderingMode(int value)
        {
            this.value = value;
        }

        /**
         * Returns the integer value of this mode, as used in a PDF file.
         */
        public int intValue()
        {
            return value;
        }

        /**
         * Returns true is this mode fills text.
         */
        public boolean isFill()
        {
            return this == FILL ||
                   this == FILL_STROKE ||
                   this == FILL_CLIP ||
                   this == FILL_STROKE_CLIP;
        }

        /**
         * Returns true is this mode strokes text.
         */
        public boolean isStroke()
        {
            return this == STROKE ||
                   this == FILL_STROKE ||
                   this == STROKE_CLIP ||
                   this == FILL_STROKE_CLIP;
        }

        /**
         * Returns true is this mode clips text.
         */
        public boolean isClip()
        {
            return this == FILL_CLIP ||
                   this == STROKE_CLIP ||
                   this == FILL_STROKE_CLIP ||
                   this == NEITHER_CLIP;
        }
    }