2020-12-20 10:28:06 +01:00
2020-12-10 19:59:19 +01:00
2020-12-10 19:59:19 +01:00
2020-12-10 19:59:19 +01:00
2020-12-12 11:00:10 +01:00
2020-12-10 19:59:19 +01:00
2020-12-18 17:00:59 +01:00
2020-12-18 17:00:59 +01:00

PhotoMound

So you are rebuilding Photoshop in the browser ?

No, I'm building a tool that does the bare minimum what I require and what I don't find in other open source tools. That doesn't mean of course that contributions related to Photoshop-esque features aren't welcomed.

All self-written ?

Yep, though it helps having worked five years in the photo software industry and having tackled problems before.

PhotoMound does however make use of the following excellent libraries to speed up its development:

Dropbox integration

Requires you to register a client id or access token.

Project setup

npm install

Compiles and hot-reloads for development

npm run serve

Compiles and minifies for production

npm run build

Run your unit tests

npm run test

Lints and fixes files

npm run lint

TODO / Roadmap

  • Zoom set original size isn't that accurate (check also on mobile views)
  • LayerSprite should only draw when brush tool is active
  • Canvas clearRect() is not doing full width and height ? (might be related to drawable layer click color problem)
  • Document resizing doesn't rescale sprites properly?
  • Layer masking should be linked to a target layer
  • Layer view in options-panel: allow naming, repositioning, toggle visibility, change type (for masking), opacity
  • Canvas util : store transparency of images
  • Restored base64 images should be treated as binary once more (see layer-factory)
  • scale logic should move from zoomable-canvas into zCanvas (as handleInteraction needs to transform offsets by zoom ratio, see LayerSprite!)
  • adjust scaling (on widescreen images scale in the width, rather than go for full height and zoomed out mode)
  • Image position must be made persistent (now isn't on document switch)
  • Implement selections
  • Unload Blobs when images are no longer used in document (see sprite-factory disposeSprite, keep instance count of usages)
  • Export output to image file (by rendering document content on separate canvas instead of taking snapshot at incorrect scale)
  • Load/save documents from/to Dropbox
  • Use hand cursor when draggable
  • Text editing using Google fonts!
  • Use paint brush cursor when painting
  • Add tools for layer rotation and scaling
  • Implement clone brush
  • Implement document crop
  • Implement change history
Languages
TypeScript 68.3%
Vue 28.8%
SCSS 2.1%
HTML 0.4%
C++ 0.3%
Other 0.1%