Class FoliosLayout

java.lang.Object
net.ixdarklord.folios.api.client.page.FoliosLayout

public final class FoliosLayout extends Object
Where pages are laid out: the page's size and margins, the font, and helpers for the parts most pages have (a title, and text that continues onto further pages).

A page is pageWidth() by pageHeight() pixels: 136 by 180 in a handheld book and on a screen at the Auto GUI scale, larger on a screen at a smaller GUI scale, so more fits on it. Content sits between the margins, from CONTENT_LEFT to contentRight() and CONTENT_TOP to contentBottom(). A page type lays itself out to these (and draws to its FoliosPainter's), so it fills a larger page; the constants are the default page's.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final record 
    What a page asked flow(String, int, String, FoliosPageElement.Part) for: its title, its own part and how tall it is, and its text.
    static final record 
    A named place on the pages a page lays out: the pageth of them (from 0), from top down to bottom on it.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Under this are the page's number and its turn buttons, with 2 pixels between them and what is on the page.
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
    How far above a page's foot its content stops: under it are the page's number and its turn buttons, 2 pixels clear.
    static final int
     
    static final int
     
    static final int
    The default page's size: a handheld book's, and a screen book's at the Auto GUI scale.
    static final int
    How many texture pixels a scene has for each page pixel it is shown over: enough for it to stay sharp on a handheld book held close and on large screens.
    static final int
    How much room a title takes: its line, its rule under it, and 4 pixels under that (as a heading in text has).
  • Constructor Summary

    Constructors
    Constructor
    Description
    FoliosLayout(FoliosBook book, net.minecraft.client.gui.Font font)
     
    FoliosLayout(FoliosBook book, net.minecraft.client.gui.Font font, int pageWidth, int pageHeight)
    A layout for pages pageWidth by pageHeight, no smaller than the default page.
  • Method Summary

    Modifier and Type
    Method
    Description
    @Nullable FoliosAlign
    How what is laid out now is aligned across the page ("alignment"); null for each part's own way.
    void
    alignment(@Nullable FoliosAlign alignment)
    Sets how what is laid out next is aligned, as a page sets it for each of its elements; null for each part's own way.
     
    Lays a page out only as far as what it asks flow(String, int, String, FoliosPageElement.Part) for, to set it inside another page; empty for a page that lays itself out some other way.
    void
    Closes the scenes made for this layout.
    int
     
    int
    Where content ends at the right, how wide it is, and where it ends at the foot (above the number and turn buttons).
    int
     
    flow(@Nullable String title, int reserved, @Nullable String text, @Nullable FoliosPageElement.Part part)
    A page with an optional title, a part of its own reserved pixels tall under it, and text under that; text that doesn't fit runs on over as many more pages as it needs.
    net.minecraft.client.gui.Font
     
    void
    mark(String name, int laid)
    Marks the whole of the laidth page laid out (from 0) with a name.
    void
    Marks a place on the pages the page being laid out lays out with a name, for links to reach and to be shown when they do: where a part of it is, as a page of elements marks each of its elements.
    int
     
    int
    The page's width and height, in its own pixels.
    static int
    place(FoliosPainter painter, @Nullable FoliosAlign align, int width)
    Where something width wide starts across the page's content, for an alignment: centred for null and FoliosAlign.JUSTIFY, the way a picture or a card is placed by default.
    int
    scaled(int height)
    A height written for the default page, for this one: grown as the page is wider, so a window (a scene, a picture) keeps its shape on a larger page rather than turning into a strip.
    The names marked since this was last asked, each with its place; and forgets them.
    text(String raw)
     
    static void
    title(FoliosPainter painter, net.minecraft.network.chat.Component title, int y)
    A page's title: bold, with a line under it.
    static void
    title(FoliosPainter painter, net.minecraft.network.chat.Component title, int y, FoliosIcon icon)
    As title(FoliosPainter, Component, int), with an icon before it, unless none: three quarters of its size, centred over a mark of the book's colour that heads the line under the title, the title starting where the rest of the line does.
    static void
    title(FoliosPainter painter, net.minecraft.network.chat.Component title, int y, FoliosIcon icon, @Nullable FoliosAlign align)
    As title(FoliosPainter, Component, int, FoliosIcon), placed across the page by an alignment (left for null or justify).
     
    void
    The icon put before the titles of the pages laid out next (as flow(String, int, String, FoliosPageElement.Part) draws them): their entry's, or a page's own.
    net.ixdarklord.coolcatcanvas.api.client.viewport.SceneViewport
    viewport(int width, int height)
    A scene for a page to show (an entity, a structure), drawn to a texture of width by height pixels (its size on the page times SCENE_DETAIL).

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • PAGE_WIDTH

      public static final int PAGE_WIDTH
      The default page's size: a handheld book's, and a screen book's at the Auto GUI scale.
      See Also:
    • PAGE_HEIGHT

      public static final int PAGE_HEIGHT
      See Also:
    • MARGIN

      public static final int MARGIN
      See Also:
    • CONTENT_LEFT

      public static final int CONTENT_LEFT
      See Also:
    • CONTENT_RIGHT

      public static final int CONTENT_RIGHT
      See Also:
    • CONTENT_WIDTH

      public static final int CONTENT_WIDTH
      See Also:
    • CONTENT_TOP

      public static final int CONTENT_TOP
      See Also:
    • CONTENT_BOTTOM

      public static final int CONTENT_BOTTOM
      Under this are the page's number and its turn buttons, with 2 pixels between them and what is on the page.
      See Also:
    • TITLE_HEIGHT

      public static final int TITLE_HEIGHT
      How much room a title takes: its line, its rule under it, and 4 pixels under that (as a heading in text has).
      See Also:
    • SCENE_DETAIL

      public static final int SCENE_DETAIL
      How many texture pixels a scene has for each page pixel it is shown over: enough for it to stay sharp on a handheld book held close and on large screens.
      See Also:
  • Constructor Details

    • FoliosLayout

      public FoliosLayout(FoliosBook book, net.minecraft.client.gui.Font font)
    • FoliosLayout

      public FoliosLayout(FoliosBook book, net.minecraft.client.gui.Font font, int pageWidth, int pageHeight)
      A layout for pages pageWidth by pageHeight, no smaller than the default page.
  • Method Details

    • pageWidth

      public int pageWidth()
      The page's width and height, in its own pixels.
    • pageHeight

      public int pageHeight()
    • scaled

      public int scaled(int height)
      A height written for the default page, for this one: grown as the page is wider, so a window (a scene, a picture) keeps its shape on a larger page rather than turning into a strip.
    • contentRight

      public int contentRight()
      Where content ends at the right, how wide it is, and where it ends at the foot (above the number and turn buttons).
    • contentWidth

      public int contentWidth()
    • contentBottom

      public int contentBottom()
    • book

      public FoliosBook book()
    • font

      public net.minecraft.client.gui.Font font()
    • alignment

      public @Nullable FoliosAlign alignment()
      How what is laid out now is aligned across the page ("alignment"); null for each part's own way.
    • alignment

      public void alignment(@Nullable FoliosAlign alignment)
      Sets how what is laid out next is aligned, as a page sets it for each of its elements; null for each part's own way.
    • place

      public static int place(FoliosPainter painter, @Nullable FoliosAlign align, int width)
      Where something width wide starts across the page's content, for an alignment: centred for null and FoliosAlign.JUSTIFY, the way a picture or a card is placed by default.
    • text

      public FoliosText text(String raw)
    • flow

      public List<FoliosPageElement.Laid> flow(@Nullable String title, int reserved, @Nullable String text, @Nullable FoliosPageElement.Part part)
      A page with an optional title, a part of its own reserved pixels tall under it, and text under that; text that doesn't fit runs on over as many more pages as it needs.
      Parameters:
      part - draws the page's own part, given the height it starts at; null for none
    • capture

      public List<FoliosLayout.Flow> capture(FoliosPageElement page)
      Lays a page out only as far as what it asks flow(String, int, String, FoliosPageElement.Part) for, to set it inside another page; empty for a page that lays itself out some other way.
    • titleIcon

      public void titleIcon(FoliosIcon icon)
      The icon put before the titles of the pages laid out next (as flow(String, int, String, FoliosPageElement.Part) draws them): their entry's, or a page's own. The book sets it as it lays out each page of an entry; FoliosIcon.NONE for none.
    • titleIcon

      public FoliosIcon titleIcon()
    • mark

      public void mark(String name, FoliosLayout.Mark mark)
      Marks a place on the pages the page being laid out lays out with a name, for links to reach and to be shown when they do: where a part of it is, as a page of elements marks each of its elements. Ignored while a page is only captured; the first mark of a name holds.
    • mark

      public void mark(String name, int laid)
      Marks the whole of the laidth page laid out (from 0) with a name.
    • takeMarks

      public Map<String, FoliosLayout.Mark> takeMarks()
      The names marked since this was last asked, each with its place; and forgets them.
    • title

      public static void title(FoliosPainter painter, net.minecraft.network.chat.Component title, int y)
      A page's title: bold, with a line under it.
    • title

      public static void title(FoliosPainter painter, net.minecraft.network.chat.Component title, int y, FoliosIcon icon)
      As title(FoliosPainter, Component, int), with an icon before it, unless none: three quarters of its size, centred over a mark of the book's colour that heads the line under the title, the title starting where the rest of the line does. Without an icon the line runs unbroken.
    • title

      public static void title(FoliosPainter painter, net.minecraft.network.chat.Component title, int y, FoliosIcon icon, @Nullable FoliosAlign align)
      As title(FoliosPainter, Component, int, FoliosIcon), placed across the page by an alignment (left for null or justify).
    • viewport

      public net.ixdarklord.coolcatcanvas.api.client.viewport.SceneViewport viewport(int width, int height)
      A scene for a page to show (an entity, a structure), drawn to a texture of width by height pixels (its size on the page times SCENE_DETAIL). It belongs to this layout: it is closed when the book is laid out again.
    • close

      public void close()
      Closes the scenes made for this layout.