0.5.1 • Published 9 months ago

sprite-creator v0.5.1

Weekly downloads
-
License
ISC
Repository
-
Last release
9 months ago

Sprite creator lib

Canvas 2D library use: typescript;

Vue3 example

input:

<script lang="ts" setup>
import { ref, onMounted } from 'vue';
import type { Ref } from 'vue';

import { VueSpriteCreator, DrawService, ToolService, AppConfig } from 'sprite-creator'
import type { IDrawImageArgs } from 'sprite-creator/dist/types/image';
import ExecutionDelay from 'execution-delay';

const editor: Ref<HTMLElement | null> = ref(null);

AppConfig.CANVAS_SIZE.width = 700;
AppConfig.CANVAS_SIZE.height = 450;
const sc = new VueSpriteCreator();
const initial = sc.getInitial();
customElements.define(initial.tag, initial.component);

const ctx: Ref<CanvasRenderingContext2D | null> = ref(null);

const quality: Ref<number> = ref(0);
const src: Ref<string | null> = ref(null);

onMounted(() => {
  //@ts-ignore
  editor.value?.addEventListener('get-editor-element', (e: CustomEvent) => {
    const { editorElement, canvasSelector } = e.detail;
    const canvas: HTMLCanvasElement = editorElement.querySelector(canvasSelector);
    ctx.value = canvas.getContext("2d");
  });
  editor.value?.dispatchEvent(new Event('initial'));
});

function setImage(event: Event) {
  const file: Ref<File | null> = ref(null);
  const target = event.target as HTMLInputElement;

  if (target && target.files) {
    file.value = target.files[0];
  }

  if (!!file.value) {
    src.value = window.URL.createObjectURL(file.value);
  }
}

function inputQuality(event: Event) {
  const target = event.target as HTMLInputElement;
  quality.value = +target.value;
  ExecutionDelay.add('draw', () => draw(quality.value), 500);
}

function draw(qualityValue: number) {
  console.log('qualityValue', qualityValue);
  if (!!ctx.value && !!src.value) {
    const options: IDrawImageArgs = {
      position: {
        x: 0,
        y: 0,
      }
    };
    DrawService.drawSmoothImage(ctx.value, src.value, options, { quality: qualityValue });
  }
}

function takePipette() {
  console.log('ToolService.registry', ToolService.registry);
  const pipetteToolId = ToolService.registry.find((tool) => tool.name === "pipette")?.id;
  if (pipetteToolId !== undefined) {
    console.log('pipetteToolId');
    ToolService.setActive(pipetteToolId);
  }
}
</script>

<template>
  <div class="editor">
    <sprite-creator class="editor" ref="editor">
      <div slot="tools">
        <div>
          <input
            id="Image"
            class="editor__image-input_input"
            name="image"
            type="file"
            accept="image/*"
            @change="setImage"
            capture
          />
        </div>
        <div>
          <input type="range" name="quality" id="Quality" min="0" max="10" @change="inputQuality">
          <span>Quality: {{ quality }}</span>
        </div>
        <button @click="takePipette">pipette</button>
      </div>
    </sprite-creator>
  </div>
</template>

simple output:

<sprite-creator>
  #shadow-root (open)
    <div>
      <canvas id="sc-canvas"></canvas>
    </div>
</sprite-creator>
0.4.42

9 months ago

0.4.43

9 months ago

0.4.40

9 months ago

0.4.41

9 months ago

0.4.48

9 months ago

0.4.49

9 months ago

0.4.46

9 months ago

0.4.47

9 months ago

0.4.44

9 months ago

0.4.45

9 months ago

0.4.31

9 months ago

0.4.32

9 months ago

0.4.30

9 months ago

0.4.39

9 months ago

0.4.37

9 months ago

0.4.38

9 months ago

0.4.35

9 months ago

0.4.36

9 months ago

0.4.33

9 months ago

0.4.34

9 months ago

0.4.28

9 months ago

0.4.29

9 months ago

0.4.26

9 months ago

0.4.27

9 months ago

0.4.24

9 months ago

0.4.25

9 months ago

0.5.1

9 months ago

0.4.64

9 months ago

0.4.65

9 months ago

0.4.62

9 months ago

0.4.63

9 months ago

0.4.60

9 months ago

0.4.61

9 months ago

0.4.68

9 months ago

0.4.66

9 months ago

0.4.67

9 months ago

0.4.53

9 months ago

0.4.54

9 months ago

0.4.51

9 months ago

0.4.52

9 months ago

0.4.50

9 months ago

0.4.59

9 months ago

0.4.57

9 months ago

0.4.58

9 months ago

0.4.55

9 months ago

0.4.56

9 months ago

0.4.23

9 months ago

0.4.22

9 months ago

0.4.21

9 months ago

0.4.20

9 months ago

0.4.19

9 months ago

0.4.18

9 months ago

0.4.17

9 months ago

0.4.16

9 months ago

0.4.15

9 months ago

0.4.14

9 months ago

0.4.13

9 months ago

0.4.12

9 months ago

0.4.11

9 months ago

0.4.10

9 months ago

0.4.9

9 months ago

0.4.8

9 months ago

0.4.7

9 months ago

0.4.6

9 months ago

0.4.5

9 months ago

0.4.4

9 months ago

0.4.3

9 months ago

0.4.2

9 months ago

0.4.1

9 months ago

0.3.35

9 months ago

0.3.34

9 months ago

0.3.33

9 months ago

0.3.32

9 months ago

0.3.31

9 months ago

0.3.30

9 months ago

0.3.29

9 months ago

0.3.28

9 months ago

0.3.27

9 months ago

0.3.26

9 months ago

0.3.25

9 months ago

0.3.24

9 months ago

0.3.23

9 months ago

0.3.22

9 months ago

0.3.21

9 months ago

0.3.20

9 months ago

0.3.19

9 months ago

0.3.18

9 months ago

0.3.17

9 months ago

0.3.16

9 months ago

0.3.15

9 months ago

0.3.14

9 months ago

0.3.13

9 months ago

0.3.12

9 months ago

0.3.11

9 months ago

0.3.10

9 months ago

0.3.9

9 months ago

0.3.8

9 months ago

0.3.7

9 months ago

0.3.6

9 months ago

0.3.5

9 months ago

0.3.4

9 months ago

0.3.3

9 months ago

0.3.2

9 months ago

0.3.1

9 months ago

0.2.11

9 months ago

0.2.10

9 months ago

0.2.9

9 months ago

0.2.8

9 months ago

0.2.7

9 months ago

0.2.6

9 months ago

0.2.5

9 months ago

0.2.4

9 months ago

0.2.3

9 months ago

0.2.2

9 months ago

0.2.1

9 months ago

0.1.61

9 months ago

0.1.60

9 months ago

0.1.59

9 months ago

0.1.58

9 months ago

0.1.57

9 months ago

0.1.56

9 months ago

0.1.55

9 months ago

0.1.54

9 months ago

0.1.53

9 months ago

0.1.52

9 months ago

0.1.51

9 months ago

0.1.50

9 months ago

0.1.49

9 months ago

0.1.48

9 months ago

0.1.47

9 months ago

0.1.46

9 months ago

0.1.45

9 months ago

0.1.44

9 months ago

0.1.43

9 months ago

0.1.42

9 months ago

0.1.41

9 months ago

0.1.40

9 months ago

0.1.39

9 months ago

0.1.38

9 months ago

0.1.37

9 months ago

0.1.36

9 months ago

0.1.35

9 months ago

0.1.34

9 months ago

0.1.33

9 months ago

0.1.32

9 months ago

0.1.31

9 months ago

0.1.30

9 months ago

0.1.29

9 months ago

0.1.28

9 months ago

0.1.27

9 months ago

0.1.26

9 months ago

0.1.25

9 months ago

0.1.24

9 months ago

0.1.23

9 months ago

0.1.22

9 months ago

0.1.21

9 months ago

0.1.20

9 months ago

0.1.19

9 months ago

0.1.18

9 months ago

0.1.17

9 months ago

0.1.16

9 months ago

0.1.15

9 months ago

0.1.14

9 months ago

0.1.13

9 months ago

0.1.12

9 months ago

0.1.11

9 months ago

0.1.10

9 months ago

0.1.9

9 months ago

0.1.8

9 months ago

0.1.7

9 months ago

0.1.6

9 months ago

0.1.5

9 months ago

0.1.4

9 months ago

0.1.3

9 months ago

0.1.2

9 months ago

0.1.1

9 months ago

0.0.37

9 months ago

0.0.36

10 months ago

0.0.35

10 months ago

0.0.34

10 months ago

0.0.33

10 months ago

0.0.32

10 months ago

0.0.31

10 months ago

0.0.30

10 months ago

0.0.29

10 months ago

0.0.28

10 months ago

0.0.27

10 months ago

0.0.26

10 months ago

0.0.25

10 months ago

0.0.24

10 months ago

0.0.23

10 months ago

0.0.22

10 months ago

0.0.21

10 months ago

0.0.20

10 months ago

0.0.19

10 months ago

0.0.18

10 months ago

0.0.17

10 months ago

0.0.16

10 months ago

0.0.15

10 months ago

0.0.14

10 months ago

0.0.13

10 months ago

0.0.12

10 months ago

0.0.11

10 months ago

0.0.10

10 months ago

0.0.9

10 months ago

0.0.8

10 months ago

0.0.7

10 months ago

0.0.6

10 months ago

0.0.5

10 months ago

0.0.4

10 months ago

0.0.3

10 months ago

0.0.2

10 months ago

0.0.1

10 months ago