KOffice – TDE office suite
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
3.3KB

  1. Background, paper, layers, blobs
  2. An image in Chalk is imposed upon a plane. Perhaps, using OpenGL,
  3. we'll be able to rotate and elevate that plane at the users' whim.
  4. If we can elevate the plane, there will be a direction of gravity
  5. that naturalistic media can play with. Note: Wet & Sticky make it
  6. possible to "paint" gravity. This looks like a fun feature, but
  7. that needs to be done per-layer, and not for the whole image.
  8. The plane is represented by the checkered background. Ideally,
  9. we'd be able to set the color of the checks & the size, and the
  10. size shouldn't change with the zoomlevel. The checks are one
  11. pattern, repeated for the whole image:
  12. O#
  13. #O
  14. Placed on the plane is optionally the substrate -- a naturalistic
  15. representation of canvas, linen, paper, board, wood, levkas. Or
  16. something weird, kopper, rock, sand... There is one substrate
  17. per image. The substrate can be a small texture repeated for the
  18. whole image, or as big as the image -- the latter is important
  19. if we want to make it possible to perturb the substrate (think scoring
  20. lines into levkas or erasing through the paper).
  21. Provisionally, the substrate has the following properties:
  22. height
  23. smoothness
  24. absorbency
  25. reflectiveness
  26. (Of course, layers below the current layer can influence these values
  27. for layers on top of them.)
  28. I have a hunch that the effect of these properties are really easy to
  29. render using OpenGL, but not so easy using plain QPainter. In any case,
  30. media layers will need to know these values at every pixel. We need
  31. a really easy & fast way to acquire them.
  32. We need to avoid the Corel Painter feature where you can use a naturalistic
  33. paper and then paint away the paper structure, mixing the color of the paper
  34. with your paint as if the paper were paint. So, we need to separate paper
  35. and paint thoroughly.
  36. On top of the substrate and background are the layers themselves.
  37. Some layers are just color; others contain media. Media means color,
  38. but possibly in a kubelka-munk colorspace, and properties like:
  39. height
  40. graininess
  41. viscosity
  42. wetness
  43. smoothness
  44. absorbency
  45. stickiness (i.e, charcoal isn't sticky at all, acryl paints very
  46. sticky)
  47. Note: Impasto models thick, 3-d paint, where tufts of thick oipaint can
  48. cast shadows...
  49. Ordinary color layers (Shoup layers in the terminology of Cockshott) can
  50. make use of the substrate parameters using special paint ops, and ordinary
  51. color can be painted on a media layer, but the ordinary color paintops
  52. do not deposit the above properties. Media paint just leaves color on the
  53. color layers. We need to avoid at all costs the Corel Painter effect where
  54. trying to use a pencil on a watercolor layer causes a nasty flow-impeding
  55. useless error box to popup.
  56. Media and ordinary layers can be grouped and mixed at will, together with adjustment
  57. layers. Adjustment layers can also be attached to selection masks, per layer.
  58. The composited layers is either scaled and color corrected, or color corrected and
  59. then scaled, depending on whether the zoom > 100% or < 100%.
  60. Note: do we need a visualisation layer on top of the layers for things
  61. like wetness, reflectiveness, height? Perhaps this is the right place for that.
  62. We need perhaps to add a light source or two, in OpenGL mode... I think
  63. we do.
  64. On top of the layers are what Xara calls blobs: the temporary droppings of
  65. tools, like rubber bands, vector paths, brush tqshape cursors.