/* * 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. */ /* $Id$ */ package org.apache.fop.traits; /** * This class provides a reusable implementation of the WritingModeTraitsSetter * interface. */ public class WritingModeTraits implements WritingModeTraitsSetter { private Direction inlineProgressionDirection; private Direction blockProgressionDirection; private Direction columnProgressionDirection; private Direction rowProgressionDirection; private Direction shiftDirection; private WritingMode writingMode; private boolean explicit; /** * Default writing mode traits constructor. */ public WritingModeTraits() { this (WritingMode.LR_TB, false); } /** * Construct writing mode traits using the specified writing mode. * @param writingMode a writing mode traits object */ public WritingModeTraits(WritingMode writingMode, boolean explicit) { assignWritingModeTraits(writingMode, explicit); } /** * @return the "inline-progression-direction" trait. */ public Direction getInlineProgressionDirection() { return inlineProgressionDirection; } /** * @param direction the "inline-progression-direction" trait. */ public void setInlineProgressionDirection(Direction direction) { this.inlineProgressionDirection = direction; } /** * @return the "block-progression-direction" trait. */ public Direction getBlockProgressionDirection() { return blockProgressionDirection; } /** * @param direction the "block-progression-direction" trait. */ public void setBlockProgressionDirection(Direction direction) { this.blockProgressionDirection = direction; } /** * @return the "column-progression-direction" trait. */ public Direction getColumnProgressionDirection() { return columnProgressionDirection; } /** * @param direction the "column-progression-direction" trait. */ public void setColumnProgressionDirection(Direction direction) { this.columnProgressionDirection = direction; } /** * @return the "row-progression-direction" trait. */ public Direction getRowProgressionDirection() { return rowProgressionDirection; } /** * @param direction the "row-progression-direction" trait. */ public void setRowProgressionDirection(Direction direction) { this.rowProgressionDirection = direction; } /** * @return the "shift-direction" trait. */ public Direction getShiftDirection() { return shiftDirection; } /** * @param direction the "shift-direction" trait. */ public void setShiftDirection(Direction direction) { this.shiftDirection = direction; } /** * @return the "writing-mode" trait. */ public WritingMode getWritingMode() { return writingMode; } /** * @return the "explicit-writing-mode" trait. */ public boolean getExplicitWritingMode() { return explicit; } /** * @param writingMode the "writing-mode" trait. */ public void setWritingMode(WritingMode writingMode, boolean explicit) { this.writingMode = writingMode; this.explicit = explicit; } /** * @param writingMode the "writing-mode" trait. */ public void assignWritingModeTraits(WritingMode writingMode, boolean explicit) { writingMode.assignWritingModeTraits(this, explicit); } /** * Helper function to find the writing mode traits getter (if any) that applies for * a given FO node. * @param fn the node to start searching from * @return the applicable writing mode traits getter, or null if none applies */ public static WritingModeTraitsGetter getWritingModeTraitsGetter(org.apache.fop.fo.FONode fn) { for (org.apache.fop.fo.FONode n = fn; n != null; n = n.getParent()) { if (n instanceof WritingModeTraitsGetter) { return (WritingModeTraitsGetter) n; } } return null; } }