GithubHelp home page GithubHelp logo

shuhei / pixelm Goto Github PK

View Code? Open in Web Editor NEW
36.0 5.0 1.0 779 KB

A pixel art editor written in Elm

Home Page: http://shuheikagawa.com/pixelm/

Elm 82.85% HTML 1.30% JavaScript 10.46% CSS 5.39%
pixel-art pixel-editor elm

pixelm's Introduction

Pixelm Build Status

A pixel art editor written in Elm

Features

  • Usable on mobile devices
  • Tools: pencil, eraser, bucket, move, clear
  • Undo
  • Animation
  • Export to PNG, GIF and animated GIF

pixelm

Development

Install:

npm install
elm-package install

cd tests
elm-package install

Start dev server:

npm start

Run unit tests:

npm test

Build assets for production:

npm run build

Deploy to GitHub Pages:

npm run deploy

This project is bootstrapped with Create Elm App. Check out its README template for the structure of this project.

pixelm's People

Contributors

halfzebra avatar shuhei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

halfzebra

pixelm's Issues

Higher resolution

Probably zooming on mobile devices is necessary.

  • Zoom (#30)
  • Change resolution
    • Resize pixel grid
    • Handle resolution change with undo/redo

Select frame properly

Selecting frame doesn't work properly if there are exactly same frames.

Put unique IDs?

Pausing animation preview

Continuous animation preview could be stopped on click in case it becomes a distracting element.

Paused stated could be reflected in the UI with a faded out overlay or through border color.

image

Layout

Put the main canvas in the middle and tools on the sides.

Wrong animation preview

Currently it's using mod to get a frame to show, but timer is not always accurate. Should have a current frame number in model and increment it with Tick. Also, it should be updated when frame count changes (add & delete).

Interpolate with the pencil tool

If you draw a line with the pencil tool very quickly, not all the pixels on the line are drawn.

screen shot 2017-08-20 at 11 21 38

This is happening because mousemove or touchmove event are not fired frequently enough. Performance is not the problem here. I confirmed it by checking another performance app with Chrome DevTool.

It would be nice to interpolate pixels.

Canvas state is lost when leaving the page

Leaving the app resets the current state of the canvas which can result in the loss of hours of work.

Maybe the app could save the current canvas to local storage and/or prompt the user about saving changes before leaving.

Import/Export drawings

It would be nice to be able to import and export pixelm drawings to a format like json.

Use cases for this would be:

  • Saving changes to continue work later
  • Savepoints, version control
  • Saving and loading your own templates
  • Sharing artwork
  • Loading and viewing other people's artwork
  • Maybe save user palettes (when supported) along with drawing?

Choose file format

Some browsers don't support multiple downloads without giving permissions. Also downloading multiple files at once can open consecutive download dialogs which can be confusing.

I suggest showing a dialog for picking the desired download format

screenshot from 2017-09-01 19-13-40

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.