shared/java/shaper/RunHandler.java (12 lines of code) (raw):
package org.jetbrains.skija.shaper;
import org.jetbrains.annotations.*;
import org.jetbrains.skija.*;
import org.jetbrains.skija.impl.*;
public interface RunHandler {
/**
* Called when beginning a line.
*/
void beginLine();
/**
* Called once for each run in a line. Can compute baselines and offsets.
*/
void runInfo(RunInfo info);
/**
* Called after all {@link #runInfo} calls for a line.
*/
void commitRunInfo();
/**
* Called for each run in a line after {@link #commitRunInfo}.
*
* @return an offset to add to every position
*/
Point runOffset(RunInfo info);
/**
* <p>Called for each run in a line after {@link #runOffset}.</p>
*
* <p>WARN positions are reported from the start of the line, not run, only in Shaper.makeCoreText https://bugs.chromium.org/p/skia/issues/detail?id=10898</p>
*
* @param positions put glyphs[i] at positions[i]
* @param clusters clusters[i] is an utf-16 offset starting run which produced glyphs[i]
*/
void commitRun(RunInfo info, short[] glyphs, Point[] positions, int[] clusters);
/**
* Called when ending a line.
*/
void commitLine();
}