com.helger.pdflayout.base.IPLHasPadding Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ph-pdf-layout Show documentation
Show all versions of ph-pdf-layout Show documentation
Library for creating nicely layouted PDF documents based on PDFBox
/*
* Copyright (C) 2014-2024 Philip Helger (www.helger.com)
* philip[at]helger[dot]com
*
* 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 com.helger.pdflayout.base;
import javax.annotation.Nonnull;
import com.helger.commons.traits.IGenericImplTrait;
import com.helger.pdflayout.spec.PaddingSpec;
/**
* Base interface for objects having a padding
*
* @author Philip Helger
* @param
* Implementation type
*/
public interface IPLHasPadding > extends
IPLHasOutline,
IGenericImplTrait
{
/**
* The default padding is a 0 padding, meaning no padding at all.
*/
PaddingSpec DEFAULT_PADDING = PaddingSpec.PADDING0;
/**
* Set all padding values (left, top, right, bottom) to the same value.
*
* @param fPadding
* The value to use.
* @return this
*/
@Nonnull
default IMPLTYPE setPadding (final float fPadding)
{
return setPadding (fPadding, fPadding);
}
/**
* Set all padding values.
*
* @param fPaddingY
* The Y-value to use (for top and bottom).
* @param fPaddingX
* The X-value to use (for left and right).
* @return this
*/
@Nonnull
default IMPLTYPE setPadding (final float fPaddingY, final float fPaddingX)
{
return setPadding (fPaddingY, fPaddingX, fPaddingY, fPaddingX);
}
/**
* Set all padding values to potentially different values.
*
* @param fPaddingTop
* Top
* @param fPaddingRight
* Right
* @param fPaddingBottom
* Bottom
* @param fPaddingLeft
* Left
* @return this
*/
@Nonnull
default IMPLTYPE setPadding (final float fPaddingTop,
final float fPaddingRight,
final float fPaddingBottom,
final float fPaddingLeft)
{
return setPadding (new PaddingSpec (fPaddingTop, fPaddingRight, fPaddingBottom, fPaddingLeft));
}
/**
* Set the padding values.
*
* @param aPadding
* Padding to use. May not be null
.
* @return this
*/
@Nonnull
IMPLTYPE setPadding (@Nonnull PaddingSpec aPadding);
/**
* Set the top padding value.
*
* @param fPadding
* The value to use.
* @return this
*/
@Nonnull
default IMPLTYPE setPaddingTop (final float fPadding)
{
return setPadding (getPadding ().getCloneWithTop (fPadding));
}
/**
* Set the right padding value.
*
* @param fPadding
* The value to use.
* @return this
*/
@Nonnull
default IMPLTYPE setPaddingRight (final float fPadding)
{
return setPadding (getPadding ().getCloneWithRight (fPadding));
}
/**
* Set the bottom padding value.
*
* @param fPadding
* The value to use.
* @return this
*/
@Nonnull
default IMPLTYPE setPaddingBottom (final float fPadding)
{
return setPadding (getPadding ().getCloneWithBottom (fPadding));
}
/**
* Set the left padding value.
*
* @param fPadding
* The value to use.
* @return this
*/
@Nonnull
default IMPLTYPE setPaddingLeft (final float fPadding)
{
return setPadding (getPadding ().getCloneWithLeft (fPadding));
}
/**
* Set the left padding left AND right value.
*
* @param fPadding
* The value to use.
* @return this
* @since 5.2.2
*/
@Nonnull
default IMPLTYPE setPaddingX (final float fPadding)
{
return setPaddingLeft (fPadding).setPaddingRight (fPadding);
}
/**
* Set the left padding top AND bottom value.
*
* @param fPadding
* The value to use.
* @return this
* @since 5.2.2
*/
@Nonnull
default IMPLTYPE setPaddingY (final float fPadding)
{
return setPaddingTop (fPadding).setPaddingBottom (fPadding);
}
/**
* Add to the top padding value.
*
* @param fPadding
* The value to add.
* @return this
*/
@Nonnull
default IMPLTYPE addPaddingTop (final float fPadding)
{
if (fPadding == 0f)
return thisAsT ();
return setPaddingTop (getPaddingTop () + fPadding);
}
/**
* Add to the right padding value.
*
* @param fPadding
* The value to add.
* @return this
*/
@Nonnull
default IMPLTYPE addPaddingRight (final float fPadding)
{
if (fPadding == 0f)
return thisAsT ();
return setPaddingRight (getPaddingRight () + fPadding);
}
/**
* Add to the bottom padding value.
*
* @param fPadding
* The value to add.
* @return this
*/
@Nonnull
default IMPLTYPE addPaddingBottom (final float fPadding)
{
if (fPadding == 0f)
return thisAsT ();
return setPaddingBottom (getPaddingBottom () + fPadding);
}
/**
* Add to the left padding value.
*
* @param fPadding
* The value to add.
* @return this
*/
@Nonnull
default IMPLTYPE addPaddingLeft (final float fPadding)
{
if (fPadding == 0f)
return thisAsT ();
return setPaddingLeft (getPaddingLeft () + fPadding);
}
/**
* Add to the left padding left AND right value.
*
* @param fPadding
* The value to add.
* @return this
* @since 5.2.2
*/
@Nonnull
default IMPLTYPE addPaddingX (final float fPadding)
{
return addPaddingLeft (fPadding).addPaddingRight (fPadding);
}
/**
* Add to the left padding top AND bottom value.
*
* @param fPadding
* The value to add.
* @return this
* @since 5.2.2
*/
@Nonnull
default IMPLTYPE addPaddingY (final float fPadding)
{
return addPaddingTop (fPadding).addPaddingBottom (fPadding);
}
/**
* @return The current padding. Never null
.
*/
@Nonnull
PaddingSpec getPadding ();
/**
* @return The current top padding.
*/
default float getPaddingTop ()
{
return getPadding ().getTop ();
}
/**
* @return The current right padding.
*/
default float getPaddingRight ()
{
return getPadding ().getRight ();
}
/**
* @return The current bottom padding.
*/
default float getPaddingBottom ()
{
return getPadding ().getBottom ();
}
/**
* @return The current left padding.
*/
default float getPaddingLeft ()
{
return getPadding ().getLeft ();
}
/**
* @return The sum of left and right padding.
*/
default float getPaddingXSum ()
{
return getPadding ().getXSum ();
}
/**
* @return The sum of top and bottom padding.
*/
default float getPaddingYSum ()
{
return getPadding ().getYSum ();
}
@Override
default float getOutlineTop ()
{
return getPaddingTop ();
}
@Override
default float getOutlineRight ()
{
return getPaddingRight ();
}
@Override
default float getOutlineBottom ()
{
return getPaddingBottom ();
}
@Override
default float getOutlineLeft ()
{
return getPaddingLeft ();
}
@Override
default float getOutlineXSum ()
{
return getPaddingXSum ();
}
@Override
default float getOutlineYSum ()
{
return getPaddingYSum ();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy