Support for high density monitors with devicePixelRatio
@Absulit y travaille déjà.
Depuis le 2/6/2026.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 65/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- javascript
- Domaine
- computer-graphics, frontend
Piste de recherche
L’issue concerne le redimensionnement du canvas pour les moniteurs à haute densité. Examinez l’utilisation de ResizeObserver dans l’extrait de code, probablement dans un module de gestion du canvas. Commencez par trouver où le canvas est initialisé et redimensionné, puis intégrez la prise en charge de devicePixelRatio comme indiqué. Testez en exécutant la bibliothèque sur un écran haute résolution (High-DPI) et en vérifiant que le rendu du canvas est net.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
This is related to #299
Required for high density monitors and the HTML in Canvas to not look blurry, it needs to support the device pixel ratio
const observer = new ResizeObserver(this.#resizeCanvasToFitWindow);
const supportsDevicePixelContentBox =
typeof ResizeObserverEntry !== 'undefined' &&
'devicePixelContentBoxSize' in ResizeObserverEntry.prototype;
const options = supportsDevicePixelContentBox ? { box: 'device-pixel-content-box', signal } : { signal };
observer.observe(this.#canvas, options);
#resizeCanvasToFitWindow = (entries) => {
// there are some calls of this function that do not have entries
// because of this, clientWidth and clientHeight values are used
const entry = entries?.[0];
this.#screenResized = true;
if (this.#fitWindow) {
const width = entry?.contentRect?.width || this.#canvas.clientWidth;
const height = entry?.contentRect?.height || this.#canvas.clientHeight;
const dpc = entry?.devicePixelContentBoxSize;
this.#canvas.width = dpc ? dpc[0].inlineSize : Math.round(width * window.devicePixelRatio);
this.#canvas.height = dpc ? dpc[0].blockSize : Math.round(height * window.devicePixelRatio);
this.#setScreenSize();
this.#frame()
}
}
- Langage dominant
- JavaScript
- Étoiles
- 56
- Forks
- 5
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Absulit/points
-
binding ids don't matchPeut-être à nouveau libre @Absulit l’a pris il y a 135 jours, et aucune pull request n’est ouverte. Ouvertebug
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
-
Generate a default canvas instead of assigning onePeut-être à nouveau libre @Absulit l’a pris il y a 159 jours, et aucune pull request n’est ouverte. Ouverteenhancement good first issue
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
-
Implement Spark texturesOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
-
Implement immediatesPeut-être à nouveau libre @Absulit l’a pris il y a 164 jours, et aucune pull request n’est ouverte. Ouvertecanned enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
-
On screen resize, blank frames are displayedPeut-être à nouveau libre @Absulit l’a pris il y a 164 jours, et aucune pull request n’est ouverte. Ouvertebug
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
Toutes les issues de Absulit/points
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
521xueweihan/HelloGitHub#4237 ·
-
enhancement localization
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
quarto-dev/quarto-cli#15268 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
oarepo/oarepo-ui#512 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Incorrect fuctioning of `Container.removeChildren()` when provided with nonzero starting indexOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 2 jours