Re: [webkit-dev] Double-Resolution (Retina) Images - Re: -webkit-image-set

2012-04-27 Thread Tom Penzer
  
completely backwards-compatible with existing browsers. We can revisit  
whether or not this was really the best approach once 4x displays are  
out, but it's going to save millions of collective developer-hours in  
the meantime; remind me to buy future me a beer to make up for it.


As a corollary to this, a similar approach could be used to add  
support for different image formats without losing backwards- 
compatibility, and again saving many precious developer-years. Imagine  
meta image-formats={jpeg2000, '.jp2'} assume- 
present={jpeg2000,boolean} /



-Tom Penzer
On Apr 23, 2012, at 11:30 PM, Maciej Stachowiak wrote:



It would be more readable to use:

@media screen and (min-device-pixel-ratio: 2) { … }

The -webkit-image-set proposal explains why it is a useful shorthand  
despite the existing device pixel ratio option.


Regards,
Maciej


On Apr 23, 2012, at 11:11 PM, Eric Seidel wrote:


Assuming I'm understanding Kalle correctly, it seems this could
already be accomplished with @media resolution?

http://www.w3.org/TR/css3-mediaqueries/#resolution

@media screen and (min-resolution: 264dpi) { … }

Which according to:
http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density

Would match both the new iPad and the iPhone 4.

I don't know if webkit supports resolution in media queries yet?

On Mon, Apr 23, 2012 at 9:28 PM, Kalle Vahlman kalle.vahl...@gmail.com 
 wrote:

2012/4/24 Tom Penzer tpen...@mailcan.com:

Hi Everybody!

  As a first-time poster, I am sorry ahead of time for any  
lapses in
etiquette. I am seeking feedback for my (hopefully relatively  
painless in
practice compared to the alternatives - i.e. -webkit-image-set  
and html5
image) proposal to solve the problem of 2x-res (double- 
resolution) images
with our current HTML and CSS standards for devices with high- 
resolution
displays, such as 3rd Generation iPads and 4th generation iPhones  
and newer.


This seems like a perfect use-case for the @media rule of CSS,  
does it not?


It's obviously not up-to-date in its definition (eg. handheld  
devices

are not typically small screen, limited bandwidth anymore), but on
the other hand it allows undefined types as well so nothing prevents
implementers to extend it beforehand (like is done with most CSS
properties anyway).

--
Kalle Vahlman, z...@iki.fi
Powered by http://movial.com
Interesting stuff at http://sandbox.movial.com
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev




___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Double-Resolution (Retina) Images - Re: -webkit-image-set

2012-04-25 Thread Tom Penzer
Thanks Chris,
I'll go bring it up on the relevant w3.org lists (I'm guessing I'll start on 
public-HTML-comments) and see where that takes me, after refining my idea a bit 
to use more conventional naming, and to hopefully account for other scales than 
2x in an elegant manner.

I just wanted to make sure no one here told me don't bother, we've got 
superior solution x in the works, or due to y, that's not gonna fly! 

Surely, 2x images can be implemented in a sane and efficient manner for web 
developers.

-Tom



On Apr 25, 2012, at 10:23 AM, Chris Hutten-Czapski chut...@rim.com wrote:

 Assuming I'm understanding Kalle correctly, it seems this could
 already be accomplished with @media resolution?
 
 http://www.w3.org/TR/css3-mediaqueries/#resolution
 
 Not to be too cute about it, but CSS dpi is _always_ 96 CSS pixels per CSS 
 inch. What this means onscreen is (almost) completely up to the user-agent. 
 This is (potentially) why the resolution media query is defined (via the very 
 link above) to only work for bitmap media types, not screen.
 
 Dealing with hardware that has a screen dpi much higher than what CSS 
 prescribes for a device at its viewing distance (viewing distance matters: 
 http://www.w3.org/TR/css3-values/#reference-pixel ) is a hard problem, and is 
 one that is being discussed at length on the previously-mentioned threads and 
 elsewhere. 
 
 The iPhone seems to handle it by introducing a third type of pixels between 
 hardware and CSS (a device/density-independent-pixel, or dip) that allows 
 them to pretend that even the new iPhone has only 320px of width in portrait. 
 BlackBerry has done other things at various times, currently taking advantage 
 of dpi scaling (a little of which you can see in 
 BlackBerry::WebKit::WebPagePrivate::recomputeVirtualViewportFromViewportArguments
  ). Android and Chrome-for-Android also have congruent practices, even 
 exposing some of it to authors using target-densitydpi.
 
 Using HTML attributes and CSS properties to offload the effort of supporting 
 multiple densities to the author from the user-agent might be the best way to 
 solve this problem. I'm not as conversant in all the points as I feel I'd 
 need to be to render a full opinion, but my uneducated opinion is that this 
 sounds kinda hackish. 
 
 Regardless, this indeed seems like it should be discussed by the standards 
 bodies, not webkit-dev.
 
 Style,
 
 Chris H-C
 
 -
 This transmission (including any attachments) may contain confidential 
 information, privileged material (including material protected by the 
 solicitor-client or other applicable privileges), or constitute non-public 
 information. Any use of this information by anyone other than the intended 
 recipient is prohibited. If you have received this transmission in error, 
 please immediately reply to the sender and delete this information from your 
 system. Use, dissemination, distribution, or reproduction of this 
 transmission by unintended recipients is not authorized and may be unlawful.
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


[webkit-dev] Double-Resolution (Retina) Images - Re: -webkit-image-set

2012-04-23 Thread Tom Penzer

Hi Everybody!

	As a first-time poster, I am sorry ahead of time for any lapses in  
etiquette. I am seeking feedback for my (hopefully relatively painless  
in practice compared to the alternatives - i.e. -webkit-image-set and  
html5 image) proposal to solve the problem of 2x-res (double- 
resolution) images with our current HTML and CSS standards for devices  
with high-resolution displays, such as 3rd Generation iPads and 4th  
generation iPhones and newer.


Here's what I had in mind. We add the following elements:

1) The new meta tag 'double-resolution-images' (whose value would be a  
string for the double-res filename key - the often-standardized string  
added to the filename for 2x assets, i.e. '_2x'), with the optional  
boolean (defaulted to 'true') attribute 'assume-present', and maybe  
eventually the optional attribute 'double-resolution-path' for cases  
where sites store all their 2x image assets in a different directory  
than their 1x images.


2) A new optional attribute to the img tag called 'double-resolution',  
(possible values include 'true', 'false', a string for the double-res  
filename key - the often standardized string added to the filename for  
2x assets, i.e. '_2x', or 'url()' to specify a completely different  
path for the 2x asset)


3) The new optional CSS properties 'background-image-2x', 'border- 
image-2x' and 'list-style-image-2x' (possible values for these include  
'true', 'false', a string for the double-res filename key, or 'url()').


A simple example usage of these new capabilities would be the following:

meta double-resolution-images=_2x /

The effect of adding this single line to the page would be that a user  
agent that wishes to display double-res images would then attempt to  
access 'filename_2x.ext' whenever it encounters an img tag like 'img  
url=(filename.ext) /', or a CSS property like '.class {background- 
image: url(filename.ext);}', '.class {border-image:  
url(filename.ext);}' or '.class {list-style-image:  
url(filename.ext);}'. For all these, in the case that the  
'filename_2x.ext' file does not exist, a second request is made for  
'filename.ext'.


If the bulk of the 2x-resolution images are located in a different  
directory than the 1x assets, the meta tag could be extended as such:


meta double-resolution-images=_2x double-resolution- 
path=2x_images/ /


Then, any img or css-image assets would be requested from '2x_images/ 
filename_2x.ext' instead of 'images/filename.ext'.


If a particular img tag asset or css-image asset has a '@2x' double- 
resolution filename key instead of '_2x' for some reason (maybe you're  
integrating with some 3rd party off-site content with a different 2x  
naming convention), you could add a 'double-resolution' attribute to  
its img tag, such as 'img double-resolution=@2x /', or to its css  
properties, such as '.class {background-image-2x: @2x;}'.


If a particular 2x-resolution img tag asset or css-image asset is not  
located in the same directory as the 1x asset, or if the filenames and/ 
or file formats are not identical to the 1x asset, a separate path  
could be specified by doing this: 'img double-resolution=url(2x- 
images/filename.ext) /', or to its css properties by doing: '.class  
{background-image-2x: url(2x-images/filename.ext);}'.


In the case that a majority, but not all img and css-image assets are  
available in 2x resolution, the img assets that lack a 2x version  
would include the a tag such as, 'img double-resolution=false /, or  
a css property such as '.class{background-image-2x: false;}'.


In the case that a majority, but not all img and css-image assets are  
unavailable in 2x resolution, you would add the 'assume-present=false'  
attribute to the meta tag, such as 'meta double-resolution- 
images=_2x assume-present=false /', and use the 'double-resolution'  
attribute to flag img assets with a double-resolution asset available,  
such as 'img double-resolution=true /, and the css with '.class  
{background-image-2x: true;}'.


In the case that no double-resolution image assets are available, the  
meta tag can be simply omitted.


By using this approach, we avoid the need to specify the same list of  
filenames varying only by 2x-res filename key for every single image  
asset, which is a bunch of busy work that just seems extremely  
redundant and clumsy to me. We are also able to achieve the same level  
of performance for those willing to put in the extra work to flag  
assets that deviate from the default setting (to minimize requests),  
and we allow the flexibility to be lazy or wrong, and have the user  
agent make two requests in those cases. This solution is also  
completely backwards-compatible with existing browsers. We can revisit  
whether or not this was really the best approach once 4x displays are  
out, but it's going to save millions of collective developer-hours in  
the meantime; remind me to buy future me a beer to make up for it.


As a corollary 

Re: [webkit-dev] Double-Resolution (Retina) Images - Re: -webkit-image-set

2012-04-23 Thread Tom Penzer
On Apr 23, 2012, at 3:42 PM, Ryosuke Niwa rn...@webkit.org wrote:

 On what standard mailing lists have this idea been proposed or discussed?

I have not yet submitted to w3.org public-html or public-html-comments as I 
wanted to get the take of the webkit community first, since you guys are 
particularly interested in this issue.


 Again, what makes us think that we won't need background-image-3x, 
 background-image-4x, ... in the future? Or maybe background-image-7.5x?

Then maybe a meta 'image-scaling' attribute rather than 2x-specific. The main 
point is to avoid requiring each image path for the different scales to be 
explicitly written, when it's likely a standardized variation from the 1x image 
file path. We should explore ways to codify those variations, instead of making 
our lives hard.

 Not all images end with .ext. It could be generated by a server-side script 
 for example. What do we do with them?

Well, if you could think of a way to codify that request in a standardized way, 
that would certainly be something to consider. Do you think this type of system 
could be extended to account for such a situation?


 By using this approach, we avoid the need to specify the same list of 
 filenames varying only by 2x-res filename key for every single image asset, 
 which is a bunch of busy work that just seems extremely redundant and clumsy 
 to me. We are also able to achieve the same level of performance for those 
 willing to put in the extra work to flag assets that deviate from the default 
 setting (to minimize requests), and we allow the flexibility to be lazy or 
 wrong, and have the user agent make two requests in those cases. This 
 solution is also completely backwards-compatible with existing browsers. We 
 can revisit whether or not this was really the best approach once 4x displays 
 are out, but it's going to save millions of collective developer-hours in the 
 meantime; remind me to buy future me a beer to make up for it.
 
 A much better solution would be adding a new http request header, and let the 
 server send back back double resolution images.
 
 Quite frankly, I don't think we're interested in implementing this proposal.
 
 - Ryosuke

If that means we don't need to go through and fill out every single file path 
for every different scale image if there's a file naming system in place, then 
I'm all for it. I'm just scared we're needlessly making our lives harder than 
they should be.

-Tom P.
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev