Files
frameworks_base/graphics/java/android/graphics/fonts/FontStyle.java
Andrew Sapperstein 8fe35e5f21 Fix broken @see tags in public documentation.
These were previously being suppressed by doclava but with this change,
all failures are fixed and the suppression logic has been removed.

To fix the issues, there were a few possible changes made:
- broken reference to a public API (such as incorrect parameters): fixed
- unnecessary @link inside an @see tag: fixed
- @see referring to an @hide or @SystemApi: reference removed
- broken references to inner class constructors
 - worked around by fully qualifying the constructor

Bug: 6963924
Test: make doc-comment-check-docs
Exempt-From-Owner-Approval: cherry-picked from master
Change-Id: Ifbdce2de96cdffa560bd90f549fa7184d1f9af85
Merged-In: Ifbdce2de96cdffa560bd90f549fa7184d1f9af85
(cherry picked from commit e0624c7a40)
2020-05-01 18:25:32 +00:00

268 lines
7.5 KiB
Java

/*
* Copyright (C) 2018 The Android Open Source Project
*
* 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 android.graphics.fonts;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import com.android.internal.util.Preconditions;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Objects;
/**
* A font style object.
*
* This class represents a single font style which is a pair of weight value and slant value.
* Here are common font styles examples:
* <p>
* <pre>
* <code>
* final FontStyle NORMAL = new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_UPRIGHT);
* final FontStyle BOLD = new FontStyle(FONT_WEIGHT_BOLD, FONT_SLANT_UPRIGHT);
* final FontStyle ITALIC = new FontStyle(FONT_WEIGHT_NORMAL, FONT_SLANT_ITALIC);
* final FontStyle BOLD_ITALIC = new FontStyle(FONT_WEIGHT_BOLD, FONT_SLANT_ITALIC);
* </code>
* </pre>
* </p>
*
*/
public final class FontStyle {
private static final String TAG = "FontStyle";
/**
* A minimum weight value for the font
*/
public static final int FONT_WEIGHT_MIN = 1;
/**
* A font weight value for the thin weight
*/
public static final int FONT_WEIGHT_THIN = 100;
/**
* A font weight value for the extra-light weight
*/
public static final int FONT_WEIGHT_EXTRA_LIGHT = 200;
/**
* A font weight value for the light weight
*/
public static final int FONT_WEIGHT_LIGHT = 300;
/**
* A font weight value for the normal weight
*/
public static final int FONT_WEIGHT_NORMAL = 400;
/**
* A font weight value for the medium weight
*/
public static final int FONT_WEIGHT_MEDIUM = 500;
/**
* A font weight value for the semi-bold weight
*/
public static final int FONT_WEIGHT_SEMI_BOLD = 600;
/**
* A font weight value for the bold weight.
*/
public static final int FONT_WEIGHT_BOLD = 700;
/**
* A font weight value for the extra-bold weight
*/
public static final int FONT_WEIGHT_EXTRA_BOLD = 800;
/**
* A font weight value for the black weight
*/
public static final int FONT_WEIGHT_BLACK = 900;
/**
* A maximum weight value for the font
*/
public static final int FONT_WEIGHT_MAX = 1000;
/**
* A font slant value for upright
*/
public static final int FONT_SLANT_UPRIGHT = 0;
/**
* A font slant value for italic
*/
public static final int FONT_SLANT_ITALIC = 1;
// TODO: Support FONT_SLANT_OBLIQUE
/** @hide */
@IntDef(prefix = { "FONT_SLANT_" }, value = {
FONT_SLANT_UPRIGHT,
FONT_SLANT_ITALIC
})
@Retention(RetentionPolicy.SOURCE)
public @interface FontSlant {}
private final @IntRange(from = 0, to = 1000) int mWeight;
private final @FontSlant int mSlant;
// TODO: Support width
public FontStyle() {
mWeight = FONT_WEIGHT_NORMAL;
mSlant = FONT_SLANT_UPRIGHT;
}
/**
* Create FontStyle with specific weight and italic
*
* <p>
* <table>
* <thead>
* <tr>
* <th align="center">Value</th>
* <th align="center">Name</th>
* <th align="center">Android Definition</th>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td align="center">100</td>
* <td align="center">Thin</td>
* <td align="center">{@link FontStyle#FONT_WEIGHT_THIN}</td>
* </tr>
* <tr>
* <td align="center">200</td>
* <td align="center">Extra Light (Ultra Light)</td>
* <td align="center">{@link FontStyle#FONT_WEIGHT_EXTRA_LIGHT}</td>
* </tr>
* <tr>
* <td align="center">300</td>
* <td align="center">Light</td>
* <td align="center">{@link FontStyle#FONT_WEIGHT_LIGHT}</td>
* </tr>
* <tr>
* <td align="center">400</td>
* <td align="center">Normal (Regular)</td>
* <td align="center">{@link FontStyle#FONT_WEIGHT_NORMAL}</td>
* </tr>
* <tr>
* <td align="center">500</td>
* <td align="center">Medium</td>
* <td align="center">{@link FontStyle#FONT_WEIGHT_MEDIUM}</td>
* </tr>
* <tr>
* <td align="center">600</td>
* <td align="center">Semi Bold (Demi Bold)</td>
* <td align="center">{@link FontStyle#FONT_WEIGHT_SEMI_BOLD}</td>
* </tr>
* <tr>
* <td align="center">700</td>
* <td align="center">Bold</td>
* <td align="center">{@link FontStyle#FONT_WEIGHT_BOLD}</td>
* </tr>
* <tr>
* <td align="center">800</td>
* <td align="center">Extra Bold (Ultra Bold)</td>
* <td align="center">{@link FontStyle#FONT_WEIGHT_EXTRA_BOLD}</td>
* </tr>
* <tr>
* <td align="center">900</td>
* <td align="center">Black (Heavy)</td>
* <td align="center">{@link FontStyle#FONT_WEIGHT_BLACK}</td>
* </tr>
* </tbody>
* </p>
*
* @see FontStyle#FONT_WEIGHT_THIN
* @see FontStyle#FONT_WEIGHT_EXTRA_LIGHT
* @see FontStyle#FONT_WEIGHT_LIGHT
* @see FontStyle#FONT_WEIGHT_NORMAL
* @see FontStyle#FONT_WEIGHT_MEDIUM
* @see FontStyle#FONT_WEIGHT_SEMI_BOLD
* @see FontStyle#FONT_WEIGHT_BOLD
* @see FontStyle#FONT_WEIGHT_EXTRA_BOLD
* @see FontStyle#FONT_WEIGHT_BLACK
* @param weight a weight value
* @param slant a slant value
*/
public FontStyle(int weight, @FontSlant int slant) {
Preconditions.checkArgument(FONT_WEIGHT_MIN <= weight && weight <= FONT_WEIGHT_MAX,
"weight value must be [" + FONT_WEIGHT_MIN + ", " + FONT_WEIGHT_MAX + "]");
Preconditions.checkArgument(slant == FONT_SLANT_UPRIGHT || slant == FONT_SLANT_ITALIC,
"slant value must be FONT_SLANT_UPRIGHT or FONT_SLANT_UPRIGHT");
mWeight = weight;
mSlant = slant;
}
/**
* Gets the weight value
*
* @see #FontStyle(int, int)
* @return a weight value
*/
public @IntRange(from = 0, to = 1000) int getWeight() {
return mWeight;
}
/**
* Gets the slant value
*
* @return a slant value
*/
public @FontSlant int getSlant() {
return mSlant;
}
/**
* Compute the matching score for another style.
*
* The smaller is better.
* @hide
*/
public int getMatchScore(@NonNull FontStyle o) {
return Math.abs((getWeight() - o.getWeight())) / 100 + (getSlant() == o.getSlant() ? 0 : 2);
}
@Override
public boolean equals(@Nullable Object o) {
if (o == this) {
return true;
}
if (o == null || !(o instanceof FontStyle)) {
return false;
}
FontStyle fontStyle = (FontStyle) o;
return fontStyle.mWeight == mWeight && fontStyle.mSlant == mSlant;
}
@Override
public int hashCode() {
return Objects.hash(mWeight, mSlant);
}
@Override
public String toString() {
return "FontStyle { weight=" + mWeight + ", slant=" + mSlant + "}";
}
}