% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/scheme-.R
\name{Scheme}
\alias{Scheme}
\title{Abstract Scheme Class}
\usage{
Scheme()
}
\description{
\code{scheme} is an abstract base class that represents a configurable scheme with
a unique \code{key} (the first class name). Developers should create subclasses of
\code{scheme} to define specific schemes used in layouts or plotting contexts.
}
\details{
Developers should subclass \code{Scheme} to implement specific behaviors (e.g.,
theme adjustments, alignment guides, layout spacings) and define how those
schemes are initialized, combined, and applied to plots.
}
\section{Developer Guide}{

When creating a new subclass of \code{Scheme}, you may optionally override the
following methods to customize its behavior:
\itemize{
\item \code{\link[=ggalign_init]{ggalign_init()}} \emph{(optional)}: Initializes the
scheme, often by assigning default values or computing derived properties.

\strong{Default behavior}: Returns the scheme unchanged.
\item \code{\link[=ggalign_update]{ggalign_update(x, object, ...)}} \emph{(optional)}: Defines
how to update a scheme by merging it with another of the same key.

\strong{Default behavior}: Replaces \code{x} entirely with \code{object}.
\item \code{\link[=ggalign_inherit]{ggalign_inherit(x, object)}} \emph{(optional)}: Defines how a
scheme inherits from a parent scheme (e.g., a layout template), typically
merging instead of replacing.

\strong{Default behavior}: Inheritance is ignored; \code{x} is returned unchanged.
\item \code{\link[=ggalign_update]{ggalign_update(x, object, ...)}}: Applies the scheme
(\code{object}) to a plot (\code{x}) (usually a \code{ggplot}) by modifying the \code{x}
components, theming, or annotations.
}
}

\keyword{internal}
