Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add setImageSampler for canvaskit
  • Loading branch information
bdero committed Nov 22, 2022
commit e43e5f55beced06562a16f123f8ddddc599f1bd6
2 changes: 2 additions & 0 deletions lib/web_ui/lib/painting.dart
Original file line number Diff line number Diff line change
Expand Up @@ -818,6 +818,8 @@ abstract class FragmentProgram {
abstract class FragmentShader implements Shader {
void setFloat(int index, double value);

void setImageSampler(int index, Image image);

void setSampler(int index, ImageShader sampler);

@override
Expand Down
14 changes: 14 additions & 0 deletions lib/web_ui/lib/src/engine/canvaskit/painting.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'dart:typed_data';
import 'package:ui/ui.dart' as ui;

import '../color_filter.dart';
import '../vector_math.dart';
import 'canvaskit_api.dart';
import 'color_filter.dart';
import 'image_filter.dart';
Expand Down Expand Up @@ -476,6 +477,19 @@ class CkFragmentShader implements ui.FragmentShader {
floats[index] = value;
}

@override
void setImageSampler(int index, ui.Image image) {
ui.ImageShader sampler = ui.ImageShader(
image,
ui.TileMode.clamp,
ui.TileMode.clamp,
Float32List.fromList(Matrix4.identity().storage),
null);
samplers[index] = (sampler as CkShader).skiaObject;
setFloat(lastFloatIndex + 2 * index, (sampler as CkImageShader).imageWidth.toDouble());
setFloat(lastFloatIndex + 2 * index + 1, sampler.imageHeight.toDouble());
}

@override
void setSampler(int index, ui.ImageShader sampler) {
samplers[index] = (sampler as CkShader).skiaObject;
Expand Down
5 changes: 5 additions & 0 deletions lib/web_ui/lib/src/engine/html/painting.dart
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,11 @@ class HtmlFragmentShader implements ui.FragmentShader {
throw UnsupportedError('FragmentShader is not supported for the HTML renderer.');
}

@override
void setImageSampler(int index, ui.Image image) {
throw UnsupportedError('FragmentShader is not supported for the HTML renderer.');
}

@override
void setSampler(int index, ui.ImageShader sampler) {
throw UnsupportedError('FragmentShader is not supported for the HTML renderer.');
Expand Down