Comments (6)
I just tested your example in the jCanvas sandbox, and the results look
exactly the same on both Chrome, Firefox, Safari, and Opera. I've never
heard of SRWare Iron, and therefore I don't plan on supporting it anytime
soon.
-Caleb
On Thu, Jun 21, 2012 at 2:29 PM, dksmiffs <
[email protected]
wrote:
Caleb - strokes and shadows don't seem to play together nicely on either
Firefox or SRWare Iron. I'm emailing you screenshots (can't find a way to
upload them to github) - results differ between FF & Iron, but look the
same on both SRWare Iron 18 & 19. ~Dave.drawArc({ fillStyle: "white", shadowColor: "#000", shadowBlur: 5, shadowX: -5, shadowY: 5, x: 50, y: 50, radius: 30 }) .drawArc({ fillStyle: "white", strokeStyle: "black", strokeWidth: 1, shadowColor: "#000", shadowBlur: 5, shadowX: -5, shadowY: 5, x: 50, y: 125, radius: 30 }) .drawArc({ fillStyle: "white", strokeStyle: "black", strokeWidth: 2, shadowColor: "#000", shadowBlur: 5, shadowX: -5, shadowY: 5, x: 50, y: 200, radius: 30 }) .drawRect({ fillStyle: "yellow", shadowColor: "grey", shadowBlur: 5, shadowX: 5, shadowY: 5, x: 90, y: 20, width: 40, height: 60, fromCenter: false }) .drawRect({ fillStyle: "yellow", strokeStyle: "black", strokeWidth: 1, shadowColor: "grey", shadowBlur: 5, shadowX: 5, shadowY: 5, x: 90, y: 95, width: 40, height: 60, fromCenter: false }) .drawRect({ fillStyle: "yellow", strokeStyle: "black", strokeWidth: 2, shadowColor: "grey", shadowBlur: 5, shadowX: 5, shadowY: 5, x: 90, y: 170, width: 40, height: 60, fromCenter: false });
Reply to this email directly or view it on GitHub:
#21
from jcanvas.
But even on FF, notice (when I specify strokeWidth and strokeStyle) that the shadow shows through the fill of the main shape (as if the shape's fill color were partially transparent) - that's the issue. Sorry I wasn't clear.
No worries on SRWare Iron. It's just the Chrome derivative that doesn't gather personal info like Google does w/ Chrome. In general, jCanvas works awesome on it. But again, this is just another of my test platforms, this is not the crux of the issue.
from jcanvas.
Sorry about that; I just realized what the issue was.
Quite some time ago, I chose to internally fill a shape before stroking it.
I did this so the stroke width of a filled shape will measure to be exactly
what you specified. For instance, if I said the strokeWidth was 10, then
the resulting stroke would measure to be 10px in width on the screen.
This happens because the center of the stroke width lies at the edge of the
shape. Therefore, the shape's width and height is slightly masked by the
stroke. I did this because a 1px stroke (which is the default) would look
like a 1px stroke, instead of a 0.5px stroke if I stroked before filling.
Anyway, this fill-before-stroking procedure is exactly why you see this
shadow bug. Locally, I tried stroking before filling and the shadow bug
disappears completely. However, such a radical change to jCanvas's drawing
behavior has the potential to break code. Well, the code wouldn't exactly
break, but any shape with a fill and a stroke will look slightly different.
Theoretically, I could double the stroke width to fix this, but then that
leaves us with the problem of a shape with a stroke and no fill, or shapes
with transparent fill styles.
What do you think?
-Caleb
On Thu, Jun 21, 2012 at 2:46 PM, dksmiffs <
[email protected]
wrote:
But even on FF, notice (when I specify strokeWidth and strokeStyle) that
the shadow shows through the fill of the main shape (as if the shape's fill
color were partially transparent) - that's the issue. Sorry I wasn't clear.No worries on SRWare Iron. It's just the Chrome derivative that doesn't
gather personal info like Google does w/ Chrome. In general, jCanvas works
awesome on it. But again, this is just another of my test platforms, this
is not the crux of the issue.
Reply to this email directly or view it on GitHub:
#21 (comment)
from jcanvas.
I'm messing around with direct HTML Canvas code, and while it looks like the API supports shadows with stroked shapes OR filled shapes, it sure doesn't seem to me that it supports shadows with stroked AND filled shapes very cleanly at all.
from jcanvas.
Okay, I think I figured out a working solution, based on my tests. Essentially, I just added a condition that removed the stroke's shadow if the fill was also present with its shadow. Therefore, if the fill is not present, the stroke's shadow will still appear as expected.
The changes are on GitHub now.
from jcanvas.
Caleb - looks great, thanks. This and all my regression tests work on FF 13.01 and SRWare Iron 19.
from jcanvas.
Related Issues (20)
- Triggering mouseover event with multi-layers HOT 3
- Handles not working properly after the canvas is resized HOT 7
- Animations are very CPU intensive HOT 1
- Handle plugin missing basic feature - Text HOT 3
- Handle plugin missing advanced feature - Rotation Handle HOT 1
- How to add space between the characters in text HOT 1
- Replacement for a deprecated method: $.jCanvas() HOT 1
- jcanvas21.0.1 in fireFox(70.0.1 ) removeLayer() and removeLayers() has bug HOT 1
- Rotate Text Alignment HOT 6
- How to animate the closed: true option line (drawLine) HOT 7
- if use css set canvas to half of it,and then can't drag,how to fixed this? HOT 1
- Submitting a project to the Gallery HOT 2
- Getting Uncaught TypeError: Cannot read property 'text' of undefined HOT 1
- Tainted canvases may not be exported HOT 1
- How to import jCanvas to work with Angular? HOT 11
- handle for text type HOT 6
- How to draw a Bezier in animation? HOT 1
- Export Canvas: Excluding certain objects HOT 4
- Handles can't vanish like a layer HOT 2
- multi-touch - future HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jcanvas.