[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: RE: Converting a Color object to its string representation
From: "Eran Leshem" <eran () leshem ! life>
Date: 2023-12-23 23:38:07
Message-ID: 001e01da35f9$15c01690$414043b0$ () leshem ! life
[Download RAW message or body]
This is a multipart message in MIME format.
Yes, exactly what I would like every client to avoid writing.
Eran
From: Nir Lisker [mailto:nlisker@gmail.com]
Sent: Saturday, December 23, 2023 9:24 PM
To: Eran Leshem
Cc: Kevin Rushforth; openjfx-dev@openjdk.org
Subject: Re: Converting a Color object to its string representation
I recently came across a place where I needed this conversion. This is what I did:
String fullName = color.toString();
String cssName = "#" + fullName.substring(2, fullName.length() - 2);
Is this what you want to avoid writing? (Ignoring that the javadox of toString() says \
"The content and format of the returned string might vary between implementations.")
On Sat, Dec 16, 2023 at 4:07 PM Eran Leshem <eran@leshem.life> wrote:
Thanks.
The #rrggbbaa format isn't documented on \
https://openjfx.io/javadoc/21/javafx.graphics/javafx/scene/doc-files/cssref.html#typecolor \
for some reason, so I missed it. Can I contribute a fix to the doc?
What's the process for approving option 1?
Eran
From: openjfx-dev [mailto:openjfx-dev-retn@openjdk.org] On Behalf Of Kevin Rushforth
Sent: Wednesday, December 13, 2023 2:46 PM
To: openjfx-dev@openjdk.org
Subject: Re: Converting a Color object to its string representation
Or the third option:
3. Do nothing
I would go for option 1 or 3. I do not recommend option 2.
I see some value in a minimal API (option 1), returning a fixed format, perhaps:
if alpha == 1 { "#rrggbb" } else { "#rrggbbaa" }
-- Kevin
On 12/12/2023 4:04 PM, Eran Leshem wrote:
I can see two options:
1. Minimal, just in order to satisfy the style APIs need – supporting a \
single format. I would go with non-% rgba, since it covers all dimensions in the most \
straightforward way.
2. Complete – supporting all formats accepted by Color.web(), either via \
multiple methods or via an enum parameter
Eran
From: openjfx-dev [mailto:openjfx-dev-retn@openjdk.org] On Behalf Of Andy Goryachev
Sent: Tuesday, December 12, 2023 6:08 PM
To: Scott Palmer; openjfx-dev@openjdk.org
Subject: Re: Converting a Color object to its string representation
I also think that the platform will benefit from adding this symmetrical API.
It is less clear how that new API should deal with all the multiple variants of the \
web format (#rgb, #rrggbb, rgb, rgba, 0x*, ...).
-andy
From: openjfx-dev <mailto:openjfx-dev-retn@openjdk.org> \
<openjfx-dev-retn@openjdk.org> on behalf of Scott Palmer <mailto:swpalmer@gmail.com> \
<swpalmer@gmail.com>
Date: Monday, December 11, 2023 at 17:12
To: openjfx-dev@openjdk.org <mailto:openjfx-dev@openjdk.org> \
<openjfx-dev@openjdk.org>
Subject: Re: Converting a Color object to its string representation
I agree. I was going to write pretty much this exact email, but you beat me to it.
I was implementing some user-configurable colour customizations in an application and \
needed to do it with style sheets, along with something that reads colours along the \
lines of what the new platform preferences API does.
I make a base64 data URL from a dynamically generated style sheet to avoid writing \
temp CSS files to style the app.
I also needed to do this to work around the style sheet having higher priority than \
programmatically set colours as per my misunderstanding in \
https://bugs.openjdk.org/browse/JDK-8317434
So I see value in having Color implement something like this.
Scott
On Dec 11, 2023, at 4:19 PM, Eran Leshem <mailto:eran@leshem.life> \
<eran@leshem.life> wrote:
Thank you for your responses.
Given that the framework requires colors in string format in its style APIs, I think \
it should provide some way to convert colors to strings as expected by these APIs. \
Otherwise, clients are forced to implement this bridging logic on their own, due to a \
framework gap.
And given that Color already parses these string representations, I think it makes \
sense for it to provide the inverse conversion.
Eran
-----Original Message-----
From: openjfx-dev [mailto:openjfx-dev-retn@openjdk.org] On Behalf Of John Hendrikx
Sent: Saturday, December 09, 2023 11:35 PM
To: openjfx-dev@openjdk.org
Subject: Re: Converting a Color object to its string representation
I think this is too niche to have Color provide.
Just make a utility method for whatever format you desire, instead of
making Color responsible for half a dozen ways of formatting colors, and
then probably still missing some format that someone needs.
Ticket should be closed as won't fix.
--John
On 09/12/2023 22:06, Michael Strauß wrote:
I obviously meant to write withPrefix("#"), not withDelimiter("#")...
On Sat, Dec 9, 2023 at 9:57 PM Michael Strauß <mailto:michaelstrau2@gmail.com> \
<michaelstrau2@gmail.com> wrote:
How would HexFormat work with Color, other than using an extremely
unwieldy syntax?
String formatted = HexFormat.of()
.withDelimiter("#")
.formatHex(new byte[] {
(byte)(color.getRed() * 255.0f),
(byte)(color.getGreen() * 255.0f),
(byte)(color.getBlue() * 255.0f),
(byte)(color.getOpacity() * 255.0f)
});
On Sat, Dec 9, 2023 at 9:40 PM David Alayachew <mailto:davidalayachew@gmail.com> \
<davidalayachew@gmail.com> wrote:
Apologies - java.util.HexFormat
That's what I get for firing from the hip, then looking afterwards.
[Attachment #3 (text/html)]
<html xmlns:v="urn:schemas-microsoft-com:vml" \
xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type \
content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 \
(filtered medium)"><style><!-- /* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"Freestyle Script";
panose-1:3 8 4 2 3 2 5 11 4 4;}
@font-face
{font-family:"Iosevka Fixed SS16";
panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.m1528617025002575734msolistparagraph, li.m1528617025002575734msolistparagraph, \
div.m1528617025002575734msolistparagraph \
{mso-style-name:m_1528617025002575734msolistparagraph; mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div \
class=WordSection1><p class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Yes, \
exactly what I would like every client to avoid writing.<o:p></o:p></span></p><p \
class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p \
class=MsoNormal><span style='font-size:11.0pt;font-family:"Freestyle \
Script";color:#1F497D'>Eran<o:p></o:p></span></p><p class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p \
class=MsoNormal><b><span \
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span \
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Nir Lisker \
[mailto:nlisker@gmail.com] <br><b>Sent:</b> Saturday, December 23, 2023 9:24 \
PM<br><b>To:</b> Eran Leshem<br><b>Cc:</b> Kevin Rushforth; \
openjfx-dev@openjdk.org<br><b>Subject:</b> Re: Converting a Color object to its \
string representation<o:p></o:p></span></p><p \
class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>I recently came across a \
place where I needed this conversion. This is what I did:<br><br>String fullName \
= color.toString();<br>String cssName = "#" + fullName.substring(2, \
fullName.length() - 2);<o:p></o:p></p><div><p \
class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Is this what you \
want to avoid writing? (Ignoring that the javadox of toString() says "The \
content and format of the returned string might vary between \
implementations.")<o:p></o:p></p></div></div><p \
class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Sat, Dec 16, \
2023 at 4:07 PM Eran Leshem <eran@leshem.life> \
wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC \
1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><div><div><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;color:#1F497D'>Thanks. </span><o:p></o:p></p><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;color:#1F497D'>The #rrggbbaa format isn't documented on <a \
href="https://openjfx.io/javadoc/21/javafx.graphics/javafx/scene/doc-files/cssref.html#typecolor" \
target="_blank">https://openjfx.io/javadoc/21/javafx.graphics/javafx/scene/doc-files/cssref.html#typecolor</a> \
for some reason, so I missed it. Can I contribute a fix to the \
doc?</span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;color:#1F497D'>What's the process for approving option \
1?</span><o:p></o:p></p><div><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Freestyle \
Script";color:#1F497D'>Eran</span><o:p></o:p></p></div><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;color:#1F497D'> </span><o:p></o:p></p><div><div \
style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span \
style='font-family:"Tahoma","sans-serif"'>From:</span></b><span \
style='font-family:"Tahoma","sans-serif"'> openjfx-dev [mailto:<a \
href="mailto:openjfx-dev-retn@openjdk.org" \
target="_blank">openjfx-dev-retn@openjdk.org</a>] <b>On Behalf Of </b>Kevin \
Rushforth<br><b>Sent:</b> Wednesday, December 13, 2023 2:46 PM<br><b>To:</b> <a \
href="mailto:openjfx-dev@openjdk.org" \
target="_blank">openjfx-dev@openjdk.org</a><br><b>Subject:</b> Re: Converting a Color \
object to its string representation</span><o:p></o:p></p></div></div><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p \
class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt'>Or the third \
option:<br><br>3. Do nothing<br><br>I would go for option 1 or 3. I do not recommend \
option 2.<br><br>I see some value in a minimal API (option 1), returning a fixed \
format, perhaps:<br><br> if alpha == 1 { "#rrggbb" } else \
{ "#rrggbbaa" }<br><br>-- Kevin<o:p></o:p></p><div><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>On 12/12/2023 4:04 PM, \
Eran Leshem wrote:<o:p></o:p></p></div><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;color:#1F497D'>I can see two options:</span><o:p></o:p></p><p \
class=m1528617025002575734msolistparagraph>1.<span \
style='font-size:7.0pt'> </span><span \
style='font-size:11.0pt;color:#1F497D'>Minimal, just in order to satisfy the style \
APIs need – supporting a single format. I would go with non-% rgba, since it covers \
all dimensions in the most straightforward way.</span><o:p></o:p></p><p \
class=m1528617025002575734msolistparagraph>2.<span \
style='font-size:7.0pt'> </span><span \
style='font-size:11.0pt;color:#1F497D'>Complete – supporting all formats accepted \
by Color.web(), either via multiple methods or via an enum \
parameter</span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;color:#1F497D'> </span><o:p></o:p></p><div><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Freestyle \
Script";color:#1F497D'>Eran</span><o:p></o:p></p></div><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;color:#1F497D'> </span><o:p></o:p></p><div><div \
style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span \
style='font-family:"Tahoma","sans-serif"'>From:</span></b><span \
style='font-family:"Tahoma","sans-serif"'> openjfx-dev [<a \
href="mailto:openjfx-dev-retn@openjdk.org" \
target="_blank">mailto:openjfx-dev-retn@openjdk.org</a>] <b>On Behalf Of </b>Andy \
Goryachev<br><b>Sent:</b> Tuesday, December 12, 2023 6:08 PM<br><b>To:</b> Scott \
Palmer; <a href="mailto:openjfx-dev@openjdk.org" \
target="_blank">openjfx-dev@openjdk.org</a><br><b>Subject:</b> Re: Converting a Color \
object to its string representation</span><o:p></o:p></p></div></div><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Iosevka Fixed SS16","serif"'>I also think that \
the platform will benefit from adding this symmetrical API. \
</span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Iosevka Fixed \
SS16","serif"'> </span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Iosevka Fixed SS16","serif"'>It is less clear \
how that new API should deal with all the multiple variants of the web format (#rgb, \
#rrggbb, rgb, rgba, 0x*, ...).</span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Iosevka Fixed \
SS16","serif"'> </span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Iosevka Fixed \
SS16","serif"'>-andy</span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Iosevka Fixed \
SS16","serif"'> </span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Iosevka Fixed \
SS16","serif"'> </span><o:p></o:p></p><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt;font-family:"Iosevka Fixed \
SS16","serif"'> </span><o:p></o:p></p><div \
id="m_1528617025002575734mail-editor-reference-message-container"><div><div \
style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p \
class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt'><b><span \
style='color:black'>From: </span></b><span style='color:black'>openjfx-dev <a \
href="mailto:openjfx-dev-retn@openjdk.org" \
target="_blank"><openjfx-dev-retn@openjdk.org></a> on behalf of Scott Palmer <a \
href="mailto:swpalmer@gmail.com" \
target="_blank"><swpalmer@gmail.com></a><br><b>Date: </b>Monday, December 11, \
2023 at 17:12<br><b>To: </b><a href="mailto:openjfx-dev@openjdk.org" \
target="_blank">openjfx-dev@openjdk.org</a> <a href="mailto:openjfx-dev@openjdk.org" \
target="_blank"><openjfx-dev@openjdk.org></a><br><b>Subject: </b>Re: Converting \
a Color object to its string representation</span><o:p></o:p></p></div><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'>I agree. I was going to write pretty much this exact email, \
but you beat me to it.</span><o:p></o:p></p><div><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'>I was implementing some user-configurable colour \
customizations in an application and needed to do it with style sheets, along with \
something that reads colours along the lines of what the new platform preferences API \
does. </span><o:p></o:p></p></div><div><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'>I make a base64 data URL from a dynamically generated style \
sheet to avoid writing temp CSS files to style the \
app. </span><o:p></o:p></p></div><div><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'>I also needed to do this to work around the style sheet \
having higher priority than programmatically set colours as per my misunderstanding \
in <a href="https://bugs.openjdk.org/browse/JDK-8317434" \
target="_blank">https://bugs.openjdk.org/browse/JDK-8317434</a></span><o:p></o:p></p></div><div><p \
class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'>So I see value in having Color implement something like \
this.</span><o:p></o:p></p><div><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'> </span><o:p></o:p></p><div><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'>Scott</span><o:p></o:p></p></div><div><p class=MsoNormal \
style='mso-margin-top-alt:auto;margin-bottom:12.0pt'><span \
style='font-size:11.0pt'> </span><o:p></o:p></p><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal \
style='mso-margin-top-alt:auto;margin-bottom:12.0pt'><span \
style='font-size:11.0pt'>On Dec 11, 2023, at 4:19 PM, Eran Leshem <a \
href="mailto:eran@leshem.life" target="_blank"><eran@leshem.life></a> \
wrote:</span><o:p></o:p></p></blockquote></div><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal \
style='mso-margin-top-alt:auto;margin-bottom:12.0pt'><span \
style='font-size:11.0pt'>Thank you for your responses.<br><br>Given that the \
framework requires colors in string format in its style APIs, I think it should \
provide some way to convert colors to strings as expected by these APIs. Otherwise, \
clients are forced to implement this bridging logic on their own, due to a framework \
gap.<br><br>And given that Color already parses these string representations, I think \
it makes sense for it to provide the inverse \
conversion.<br><br>Eran<br><br>-----Original Message-----<br>From: openjfx-dev [<a \
href="mailto:openjfx-dev-retn@openjdk.org" \
target="_blank">mailto:openjfx-dev-retn@openjdk.org</a>] On Behalf Of John \
Hendrikx<br>Sent: Saturday, December 09, 2023 11:35 PM<br>To: <a \
href="mailto:openjfx-dev@openjdk.org" \
target="_blank">openjfx-dev@openjdk.org</a><br>Subject: Re: Converting a Color object \
to its string representation<br><br>I think this is too niche to have Color \
provide.<br><br>Just make a utility method for whatever format you desire, instead of \
<br>making Color responsible for half a dozen ways of formatting colors, and <br>then \
probably still missing some format that someone needs.<br><br>Ticket should be closed \
as won't fix.<br><br>--John<br><br>On 09/12/2023 22:06, Michael Strauß \
wrote:</span><o:p></o:p></p><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'>I obviously meant to write withPrefix("#"), not \
withDelimiter("#")...</span><o:p></o:p></p></blockquote><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'> </span><o:p></o:p></p></blockquote><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
style='font-size:11.0pt'>On Sat, Dec 9, 2023 at 9:57 PM Michael Strauß <a \
href="mailto:michaelstrau2@gmail.com" \
target="_blank"><michaelstrau2@gmail.com></a> \
wrote:</span><o:p></o:p></p></blockquote><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal \
style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span \
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic