SpaceProvider.java

com.mojang.blaze3d.font.SpaceProvider

信息

  • 全限定名:com.mojang.blaze3d.font.SpaceProvider
  • 类型:public class
  • 包:com.mojang.blaze3d.font
  • 源码路径:src/main/java/com/mojang/blaze3d/font/SpaceProvider.java
  • 起始行号:L21
  • 实现:GlyphProvider
  • 职责:

    TODO

字段/常量

  • glyphs
    • 类型: Int2ObjectMap<EmptyGlyph>
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

内部类/嵌套类型

  • com.mojang.blaze3d.font.SpaceProvider.Definition
    • 类型: record
    • 修饰符: public
    • 源码定位: L40
    • 说明:

      TODO

构造器

public SpaceProvider(Map<Integer,Float> advances) @ L24

  • 构造器名:SpaceProvider
  • 源码定位:L24
  • 修饰符:public

参数:

  • advances: Map<Integer,Float>

说明:

TODO

方法

下面的方法块按源码顺序生成。

public UnbakedGlyph getGlyph(int codepoint) @ L29

  • 方法名:getGlyph
  • 源码定位:L29
  • 返回类型:UnbakedGlyph
  • 修饰符:public

参数:

  • codepoint: int

说明:

TODO

public IntSet getSupportedGlyphs() @ L34

  • 方法名:getSupportedGlyphs
  • 源码定位:L34
  • 返回类型:IntSet
  • 修饰符:public

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class SpaceProvider implements GlyphProvider {
    private final Int2ObjectMap<EmptyGlyph> glyphs;
 
    public SpaceProvider(Map<Integer, Float> advances) {
        this.glyphs = new Int2ObjectOpenHashMap<>(advances.size());
        advances.forEach((codepoint, advance) -> this.glyphs.put(codepoint.intValue(), new EmptyGlyph(advance)));
    }
 
    @Override
    public @Nullable UnbakedGlyph getGlyph(int codepoint) {
        return this.glyphs.get(codepoint);
    }
 
    @Override
    public IntSet getSupportedGlyphs() {
        return IntSets.unmodifiable(this.glyphs.keySet());
    }
 
    @OnlyIn(Dist.CLIENT)
    public record Definition(Map<Integer, Float> advances) implements GlyphProviderDefinition {
        public static final MapCodec<SpaceProvider.Definition> CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(Codec.unboundedMap(ExtraCodecs.CODEPOINT, Codec.FLOAT).fieldOf("advances").forGetter(SpaceProvider.Definition::advances))
                .apply(i, SpaceProvider.Definition::new)
        );
 
        @Override
        public GlyphProviderType type() {
            return GlyphProviderType.SPACE;
        }
 
        @Override
        public Either<GlyphProviderDefinition.Loader, GlyphProviderDefinition.Reference> unpack() {
            GlyphProviderDefinition.Loader loader = resourceManager -> new SpaceProvider(this.advances);
            return Either.left(loader);
        }
    }
}

引用的其他类