| /* |
| * 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; |
| } |
| |
| } |