001/*
002 * ============================================================================
003 * Copyright © 2002-2023 by Thomas Thrien.
004 * All Rights Reserved.
005 * ============================================================================
006 * Licensed to the public under the agreements of the GNU Lesser General Public
007 * License, version 3.0 (the "License"). You may obtain a copy of the License at
008 *
009 *      http://www.gnu.org/licenses/lgpl.html
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
013 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
014 * License for the specific language governing permissions and limitations
015 * under the License.
016 */
017
018package org.tquadrat.foundation.svg;
019
020import static org.apiguardian.api.API.Status.STABLE;
021import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_XLink_Actuate;
022import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_XLink_ArcRole;
023import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_XLink_Reference;
024import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_XLink_Role;
025import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_XLink_Show;
026import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_XLink_Title;
027import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_XLink_Type;
028
029import java.util.List;
030
031import org.apiguardian.api.API;
032import org.tquadrat.foundation.annotation.ClassVersion;
033
034/**
035 *  SVG elements that allow the XLink attributes
036 *  {@value SVGUtils#SVGATTRIBUTE_XLink_Actuate},
037 *  {@value SVGUtils#SVGATTRIBUTE_XLink_ArcRole},
038 *  {@value SVGUtils#SVGATTRIBUTE_XLink_Reference},
039 *  {@value SVGUtils#SVGATTRIBUTE_XLink_Role},
040 *  {@value SVGUtils#SVGATTRIBUTE_XLink_Show},
041 *  {@value SVGUtils#SVGATTRIBUTE_XLink_Title},
042 *  and
043 *  {@value SVGUtils#SVGATTRIBUTE_XLink_Type}
044 *  will implement this interface.
045 *
046 *  @extauthor Thomas Thrien - thomas.thrien@tquadrat.org
047 *  @version $Id: AllowsXLinkAttributes.java 1074 2023-10-02 12:05:06Z tquadrat $
048 *  @since 0.0.5
049 *
050 *  @UMLGraph.link
051 */
052@ClassVersion( sourceVersion = "$Id: AllowsXLinkAttributes.java 1074 2023-10-02 12:05:06Z tquadrat $" )
053@API( status = STABLE, since = "0.0.5" )
054public sealed interface AllowsXLinkAttributes
055    permits SVGUse
056{
057        /*------------------------*\
058    ====** Static Initialisations **===========================================
059        \*------------------------*/
060    /**
061     *  The core attributes.
062     */
063    @SuppressWarnings( "StaticCollection" )
064    public static final List<String> XLINK_ATTRIBUTES = List.of(
065        SVGATTRIBUTE_XLink_Actuate,
066        SVGATTRIBUTE_XLink_ArcRole,
067        SVGATTRIBUTE_XLink_Reference,
068        SVGATTRIBUTE_XLink_Role,
069        SVGATTRIBUTE_XLink_Show,
070        SVGATTRIBUTE_XLink_Title,
071        SVGATTRIBUTE_XLink_Type
072    );
073
074        /*---------*\
075    ====** Methods **==========================================================
076        \*---------*/
077    /**
078     *  Sets the XLink {@code actuate} attribute.
079     *
080     *  @param  value   The attribute type.
081     */
082    public void setXlinkActuate( final CharSequence value );
083
084    /**
085     *  Sets the XLink {@code arcrole} attribute.
086     *
087     *  @param  value   The attribute type.
088     */
089    public void setXLinkArcRole( final CharSequence value );
090
091    /**
092     *  Sets the XLink {@code reference} attribute.
093     *
094     *  @param  value   The attribute type.
095     */
096    public void setXLinkReference( final CharSequence value );
097
098    /**
099     *  Sets the XLink {@code role} attribute.
100     *
101     *  @param  value   The attribute type.
102     */
103    public void setXLinkRole( final CharSequence value );
104
105    /**
106     *  Sets the XLink {@code show} attribute.
107     *
108     *  @param  value   The attribute type.
109     */
110    public void setXLinkShow( final CharSequence value );
111
112    /**
113     *  Sets the XLink {@code title} attribute.
114     *
115     *  @param  value   The attribute type.
116     */
117    public void setXLinkTitle( final CharSequence value );
118
119    /**
120     *  Sets the XLink {@code type} attribute.
121     *
122     *  @param  value   The attribute type.
123     */
124    public void setXLinkType( final CharSequence value );
125}
126//  interface AllowsStyleAttributes
127
128/*
129 *  End of File
130 */