/*
* Copyright 2006-2017 ICEsoft Technologies Canada Corp.
*
* Licensed 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.icepdf.core.pobjects.graphics.commands;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.pobjects.graphics.OptionalContentState;
import org.icepdf.core.pobjects.graphics.PaintTimer;
import org.icepdf.core.util.Defs;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.util.logging.Logger;
/**
* AbstractDrawCmd provide common implementation details of any DrawCmd
* implementation. Draw/paint specific system properties are currently handled
* by this class.
* <ul>
* <li>org.icepdf.core.paint.disableClipping - disable clipping draw commands.</li>
* <li>org.icepdf.core.paint.disableAlpha - disable alpha draw commands. </li>
* </ul>
*
* @since 5.0
*/
public abstract class AbstractDrawCmd implements DrawCmd {
protected static final Logger logger =
Logger.getLogger(AbstractDrawCmd.class.toString());
protected static boolean disableClipping;
static {
// disable clipping, helps with printing issues on windows where the
// clip can sometimes blank a whole page. This should only be used as
// a lost resort. Buffering to an image is another way to avoid the clip
// problem.
disableClipping =
Defs.sysPropertyBoolean("org.icepdf.core.paint.disableClipping",
false);
}
public abstract Shape paintOperand(Graphics2D g, Page parentPage,
Shape currentShape, Shape clip,
AffineTransform base,
OptionalContentState optionalContentState,
boolean paintAlpha, PaintTimer paintTimer) throws InterruptedException;
}