Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Standard Widget Toolkit (SWT) » how to prevent stretching of images in swt table
how to prevent stretching of images in swt table [message #444959] Fri, 22 October 2004 10:11 Go to next message
Yves Harms is currently offline Yves HarmsFriend
Messages: 80
Registered: July 2009
Member
Hi,
when inserting images into a table all images will be resized to one
size. If the images have different aspect ratios they will be streched.
How can i prevent this stretching ?

Yves Harms
Re: how to prevent stretching of images in swt table [message #444965 is a reply to message #444959] Fri, 22 October 2004 14:27 Go to previous messageGo to next message
Veronika Irvine is currently offline Veronika IrvineFriend
Messages: 1272
Registered: July 2009
Senior Member
Images in the table are always the same size as the first image placed in
the table. The operating system performs the scaling.. To manage the
stretching of the images to maintain the origianl proportion, you need to
scale the image yourself before placing it in the table. See the example
below:

public static void main (String [] args) {
Display display = new Display ();
final Image image1 = createImage (display, 20, 30);
final Image image2 = createImage (display, 16, 16);
final Image image3 = createImage (display, 300, 100);
final Image adjustedImage1 = scaleTo16x16 (image1, display);
final Image adjustedImage2 = scaleTo16x16 (image2, display);
final Image adjustedImage3 = scaleTo16x16 (image3, display);
Shell shell = new Shell (display);
shell.setLayout (new FillLayout ());
Table table = new Table (shell, SWT.BORDER);
for (int i = 0; i < 10; i++) {
TableItem item = new TableItem (table, SWT.NONE);
item.setText ("item " + i);
if (i % 3 == 0) {
item.setImage (adjustedImage1);
} else if (i % 3 == 1) {
item.setImage (adjustedImage2);
} else {
item.setImage (adjustedImage3);
}
}
Canvas canvas = new Canvas (shell, SWT.NONE);
canvas.addPaintListener (new PaintListener () {
public void paintControl (PaintEvent e) {
int x = 0, y = 0;
e.gc.drawImage (image1, x, y);
e.gc.drawImage (adjustedImage1, x, y + 100);
x += image1.getBounds ().width + 20;
e.gc.drawImage (image2, x, y);
e.gc.drawImage (adjustedImage2, x, y + 100);
x += image2.getBounds ().width + 20;
e.gc.drawImage (image3, x, y);
e.gc.drawImage (adjustedImage3, x, y + 100);
}
});
shell.open ();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
image1.dispose ();
image2.dispose ();
image3.dispose ();
adjustedImage1.dispose ();
adjustedImage2.dispose ();
adjustedImage3.dispose ();
display.dispose ();
}

static Image scaleTo16x16 (Image image, Display display) {
Image result = new Image (display, 16, 16);
Rectangle bounds = image.getBounds ();
double scaleX = bounds.width <= 16 ? 1.0 : 16.0 / bounds.width;
double scaleY = bounds.height <= 16 ? 1.0 : 16.0 / bounds.height;
double scale = Math.min (scaleX, scaleY);
int width = (int) (scale * bounds.width);
int height = (int) (scale * bounds.height);
GC gc = new GC (result);
gc.drawImage (image, 0, 0, bounds.width, bounds.height, (16 -
width) / 2, (16 - height) / 2, width, height);
gc.dispose ();
return result;
}

static Image createImage (Display display, int width, int height) {
Image image = new Image (display, width, height);
GC gc = new GC (image);
gc.setBackground (display.getSystemColor (SWT.COLOR_RED));
gc.fillOval (0, 0, width, height);
gc.dispose ();
return image;
}


"Yves Harms" <user@domain.invalid> wrote in message
news:clalqg$nvm$1@eclipse.org...
> Hi,
> when inserting images into a table all images will be resized to one size.
> If the images have different aspect ratios they will be streched.
> How can i prevent this stretching ?
>
> Yves Harms
Re: how to prevent stretching of images in swt table [message #445059 is a reply to message #444965] Mon, 25 October 2004 14:02 Go to previous messageGo to next message
Yves Harms is currently offline Yves HarmsFriend
Messages: 80
Registered: July 2009
Member
This is a multi-part message in MIME format.
--------------040409030804030907000905
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Thanks for the example, it works great with Winxp.
Under Mac OS X however, the output is completly unuseable
(see Screenshots: winXp and Mac).
Is this a general bug ?

Yves



Veronika Irvine wrote:
> Images in the table are always the same size as the first image placed in
> the table. The operating system performs the scaling.. To manage the
> stretching of the images to maintain the origianl proportion, you need to
> scale the image yourself before placing it in the table. See the example
> below:
>
> public static void main (String [] args) {
> Display display = new Display ();
> final Image image1 = createImage (display, 20, 30);
> final Image image2 = createImage (display, 16, 16);
> final Image image3 = createImage (display, 300, 100);
> final Image adjustedImage1 = scaleTo16x16 (image1, display);
> final Image adjustedImage2 = scaleTo16x16 (image2, display);
> final Image adjustedImage3 = scaleTo16x16 (image3, display);
> Shell shell = new Shell (display);
> shell.setLayout (new FillLayout ());
> Table table = new Table (shell, SWT.BORDER);
> for (int i = 0; i < 10; i++) {
> TableItem item = new TableItem (table, SWT.NONE);
> item.setText ("item " + i);
> if (i % 3 == 0) {
> item.setImage (adjustedImage1);
> } else if (i % 3 == 1) {
> item.setImage (adjustedImage2);
> } else {
> item.setImage (adjustedImage3);
> }
> }
> Canvas canvas = new Canvas (shell, SWT.NONE);
> canvas.addPaintListener (new PaintListener () {
> public void paintControl (PaintEvent e) {
> int x = 0, y = 0;
> e.gc.drawImage (image1, x, y);
> e.gc.drawImage (adjustedImage1, x, y + 100);
> x += image1.getBounds ().width + 20;
> e.gc.drawImage (image2, x, y);
> e.gc.drawImage (adjustedImage2, x, y + 100);
> x += image2.getBounds ().width + 20;
> e.gc.drawImage (image3, x, y);
> e.gc.drawImage (adjustedImage3, x, y + 100);
> }
> });
> shell.open ();
> while (!shell.isDisposed ()) {
> if (!display.readAndDispatch ()) display.sleep ();
> }
> image1.dispose ();
> image2.dispose ();
> image3.dispose ();
> adjustedImage1.dispose ();
> adjustedImage2.dispose ();
> adjustedImage3.dispose ();
> display.dispose ();
> }
>
> static Image scaleTo16x16 (Image image, Display display) {
> Image result = new Image (display, 16, 16);
> Rectangle bounds = image.getBounds ();
> double scaleX = bounds.width <= 16 ? 1.0 : 16.0 / bounds.width;
> double scaleY = bounds.height <= 16 ? 1.0 : 16.0 / bounds.height;
> double scale = Math.min (scaleX, scaleY);
> int width = (int) (scale * bounds.width);
> int height = (int) (scale * bounds.height);
> GC gc = new GC (result);
> gc.drawImage (image, 0, 0, bounds.width, bounds.height, (16 -
> width) / 2, (16 - height) / 2, width, height);
> gc.dispose ();
> return result;
> }
>
> static Image createImage (Display display, int width, int height) {
> Image image = new Image (display, width, height);
> GC gc = new GC (image);
> gc.setBackground (display.getSystemColor (SWT.COLOR_RED));
> gc.fillOval (0, 0, width, height);
> gc.dispose ();
> return image;
> }
>
>
> "Yves Harms" <user@domain.invalid> wrote in message
> news:clalqg$nvm$1@eclipse.org...
>
>>Hi,
>>when inserting images into a table all images will be resized to one size.
>>If the images have different aspect ratios they will be streched.
>>How can i prevent this stretching ?
>>
>>Yves Harms
>
>
>


--------------040409030804030907000905
Content-Type: image/jpeg;
name="winxp.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="winxp.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDACQZGyAbFyQgHiApJyQrNls7NjIy Nm9PVEJbhHSK
iIF0f32Ro9GxkZrFnX1/tve4xdje6uzqja////7j/9Hl6uH/2wBDAScpKTYw Nms7O2vhln+W
4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh 4eHh4eH/wAAR
CAC8Ae0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDQ3BIUkluCgYDk7QM/lUnl t/z1f8h/hTUA
aGEbmGFUkKDzVZtMhO0b5cAjIwegXbjpxkYz9KQFvy2/56v+Q/wpuBs3/aG2 Yzu+XGPXpUA0
+LcrM8zkDGXBOecnPHccfTimf2XAIhGJJwoBHGRz69OuDj6UAW2UqpZp2AAy SdvH6U1iqMFa
5IJIABK9+nb2NNjtYo9+PMIZg20g4BByMccdh9AKj/s6DzFkPmFw4fdt5JBJ 549/0FAFh1KI
zGV8AZ6L/hS+W3/PZ/yH+FM8lEjlWNSpkJY8NyT3pzxpITvDMpGCjKSp/DFA C+W3/PV/yH+F
Hlt/z1f8h/hTRBEGZimSW3coeD7cfU/Ummva2zxlDCApGOEI4znHA9aAJPLb /nq/5D/Cjy2/
56v+Q/wpkltBKjI0Qwxy2EIzyD2+g/KpFVEzsTG45OEIyfXpQBHITGVzM3zH AGVBP6UrArjM
svJxwoP8hSuiuwYhsr0Ozp+lP3ezf98mgCJSrIHW4JQnAYFcHnHp60gkjJAF 1ySB95e/Tt3q
RwsiMjKxVgQRtPSnbvZv++TSGRBkKqwucqxwpyuCfQcUH5Sd9wVywVc7Rk46 dKcI4wqqsZVV
OVCoRg0yaBZ1KvvAycYU912+nuaBCoVcApclgwJGCpzjr2p/lt/z1f8AIf4V Vh023iMZBkby
zkblz6H09Rn8T61b2pv37PnxjdsOcenSmAnlt/z1f8h/hR5bf89X/If4UiRR RkFIgpAwCIyO
OuOlI1vAwIMQ+bOSEIPPB5x3oAV1KIzGV8AZ6L/hRtO4r57ZHJHy/wCFN8iN ImSJNpK7c7Dz
gYGTinNDG0pkZSx4xlCcYzgjjryaAF8tv+er/kP8KTad4XzZMkE9F9vb3pn2 aJW3RK0T7dgZ
EPAznpjH6VKR+8VucAEfdPt7e1ADEAkUMlwzKehG0j+VO8tv+er/AJD/AApJ IYpXR5ELFAQM
qe4wajW0gGC0Zc7NhLKTkZzzxjOeaAJfLb/nq/5D/Cjy2/56v+Q/wpkttDKr K6MVYcqNwHXP
Qd896dJEspO/cQVKkbD0PUZxn0/IUADKyqT5rnAz2/wpGG1wjXDBmzgHbk/T ikFvGhBRSCI/
LHynp27VIUQymTDbjgZw3bP+JoATy2/56v8AkP8ACjy2/wCer/kP8KHSOQgv GGIBAyhOM9e1
MW2gVy4iGSVP3DxgYGPTFAD/AC2/56v+Q/wo8tv+er/kP8KiWzt1WNREcRhg oIY4z1+tC2kA
wWjLnZsJZScjOeeMZzzQBIylSo81/mOBwvp9KXy2/wCer/kP8KCoym0EAMWP ynuD7e9PyP8A
a/75P+FIYzy2/wCer/kP8KPLb/nq/wCQ/wAKfkf7X/fJ/wAKMj/a/wC+T/hQ Azy2/wCer/kP
8KPLb/nq/wCQ/wAKfkf7X/fJ/wAKMj/a/wC+T/hQAzy2/wCer/kP8KPLb/nq /wCQ/wAKfkf7
X/fJ/wAKMj/a/wC+T/hQAzy2/wCer/kP8KPLb/nq/wCQ/wAKfkf7X/fJ/wAK Mj/a/wC+T/hQ
Azy2/wCer/kP8KPLb/nq/wCQ/wAKfkf7X/fJ/wAKMj/a/wC+T/hQAzy2/wCe r/kP8KPLb/nq
/wCQ/wAKfkf7X/fJ/wAKMj/a/wC+T/hQAzy2/wCer/kP8KPLb/nq/wCQ/wAK fkf7X/fJ/wAK
Mj/a/wC+T/hQAzy2/wCer/kP8KPLb/nq/wCQ/wAKfkf7X/fJ/wAKMj/a/wC+ T/hQAzy2/wCe
r/kP8KPLb/nq/wCQ/wAKfkf7X/fJ/wAKMj/a/wC+T/hQAzy2/wCer/kP8KPL b/nq/wCQ/wAK
fkf7X/fJ/wAKMj/a/wC+T/hQAzy2/wCer/kP8KPLb/nq/wCQ/wAKfkf7X/fJ /wAKMj/a/wC+
T/hQAzy2/wCer/kP8KPLb/nq/wCQ/wAKfkf7X/fJ/wAKTI9/++T/AIUARRui RpuZVzGuMnHa
n+dF/wA9E/76FLbDKL/1zX+VT4HoKdhFfzov+eif99Cjzov+eif99CrGB6Cj A9BRYCv50X/P
RP8AvoUedF/z0T/voVYwPQUYHoKLAV/Oi/56J/30KPOi/wCeif8AfQqxgego wPQUWAr+dF/z
0T/voUedF/z0T/voVYwPQUYHoKLAVXmiKN+8Tp/eFOM0WT+9T/voVYwPQUgA wOKLAQedF/z0
T/voUedF/wA9E/76FWMD0FGB6CiwFfzov+eif99Cjzov+eif99CrGB6CjA9B RYCv50X/AD0T
/voUedF/z0T/AL6FWMD0FGB6CiwFfzov+eif99Cjzov+eif99CrGB6CjA9BR YCv50X/PRP8A
voUjTRcfvE6j+IetWcD0FIQMHiiwEHnRf89E/wC+hR50X/PRP++hVjA9BRge gosBX86L/non
/fQo86L/AJ6J/wB9CrGB6CjA9BRYCv50X/PRP++hR50X/PRP++hVjA9BRgeg osBX86L/AJ6J
/wB9Cjzov+eif99CrGB6CjA9BRYCv50X/PRP++hR50X/AD0T/voVYwPQUYHo KLAVjNFuX94n
X+8PQ0vnRf8APRP++hU5A9KXA9BRYCv50X/PRP8AvoUedF/z0T/voVYwPQUY HoKLAV/Oi/56
J/30KPOi/wCeif8AfQqxgegowPQUWAr+dF/z0T/voUedF/z0T/voVYwPQUYH oKLAV/Oi/wCe
if8AfQo86L/non/fQqxgegowPQUWAr+dF/z0T/voUedF/wA9E/76FWMD0FGB 6CiwFfzov+ei
f99Cjzov+eif99CrGB6CjA9BRYCv50X/AD0T/voUedF/z0T/AL6FWMD0FGB6 CiwFfzov+eif
99Cjzov+eif99CrGB6CjA9BRYCv50X/PRP8AvoUedF/z0T/voVYwPQUYHoKL AV/Oi/56J/30
KPOi/wCeif8AfQqxgegowPQUWAr+dF/z0T/voUedF/z0T/voVYwPQUYHoKLA V/Oi/wCeif8A
fQo86L/non/fQqxgegowPQUWAr+dF/z0T/voUedF/wA9E/76FWMD0FGB6Ciw Ffzov+eif99C
nI6vnawbHoc1NgegprDGKLARWv3F/wCua/yqeoLX7i/9c1/lU9MAopG7UgGa AHUU3bRtoAdR
TCoxTaAJaKjT7wqSgAoHQUUDoKACig9KZQA+im7aNtADqKbtFNIwaAJKKiqU dBQAUHoaKD0N
ABRRSHpQAtFMpdtADqKbto2igB1FRYooAlooooAD0ooPSigAooooAKKKKACi iigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKa/anU1+1AEVr9x f+ua/wAqnqC1
+4v/AFzX+VT0AI1IDzQ/aqxLvtZJAq9cYz/WgC1RURk9xSGT/aoAlJwDnpTa iaQEEE5pvnAD
AzgcUAWF+8KfUED72PtU9ABQOgooHQUAB6U2nHoaruxyVUgHGeaAJ6KgjZkj w7hiO+MU4yf7
VAEtMJBJx2qMye5pnmgMcdT1oAnqQdBVRZssB6nHWrY6CgAoPQ0UHoaACg9K KRvumgBKWq0j
MwZUYKR3IzT1cqgDMCR3oAmoqEyf7VIZB60ASdc49aKg80KSB9TSxy7nC+tA FqiiigAPSig9
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiig
Apr9qdTX7UARWv3F/wCua/yqeoLX7i/9c1/lU9AEVyxSIkDmqKuAmcjHrmtC RQwwapNpUDNu
Jb6ZoAjM6Yz5i/8AfVQzXgSMsjAn1IJH6VeigW1baudjevY0lyS+UEiKPVh0 pN2ApLPIVAaN
i3oFI/nSSTyxhf8AR3OeO39M04q85JBLkHhlOQP19qswrKsobYwB6jHao53e w7ElgHK73UqT
2NXKavWnVoIKB0FFA6CgAPQ1nPITO3qOPwrRPQ1TnsY5zliR9KAIDMgOC6g+ 5phuEHAYE+g5
qddOjhw8Wdy89etTPJiPcrAE9M80N2AzEu5HdjjKA4+VWzT/ADZCCwgc8ZHI 5/WnSbt2wSK+
452IcEe3XiljhkVNoRsZyDg1nKbQ0riWkkk8gzCyL1ya1x0FRRFigLDDd6lH StBBQehooPQ0
AFI5wpNLSMMqRQBmiQl2J655oMydPMX/AL6qWbTopn3MW9wKRbKO1YSRZ46j 1FAEBuUHRt3+
7zUEV1I6lmXKnoVU/wBa1JnwvysuT/eGQaoOGLeWH80AZwh/+vUuXYBHllVG byHOO2R/jUti
0kz7miaMD170RxTKqgKwK98VoLkqCRilCXNuNqxJRRRViA9KKD0ooAKKKKAC iiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmv2p1Nft QBFa/cX/AK5r
/Kp6gtfuL/1zX+VT0AI1JTsZowKAI3XcuDVaWO4UZjff6gAA1dwKMCgDMMV2 2ch8H+9Jx/Ol
jspCwMmzb3AJNaOBRgUANXggCn0YAooAKB0FFA6CgAPSm06jAoAbUEkL8+XI F7gFQeas4FGB
QBmst4x5D8ejgD+dN+yXDHJCj/ebNaeBRgUAQQRCGPbxu7kd6sDoKTaKWgAo PQ0UHoaACg9K
KKAG0dadgUYFAFWSGUAmKQcdFKj+dVil4xyRIP8AtoB/WtPApMCgDMFnOx52 D6sTV6KNYkCq
OlS4FG0UALRRRQAHpRQelFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAU1+1Opr9qAIrX7i/wDXNf5VPUFr9xf+ua/yqegA ooooAKKKKACi
iigAooooAKB0FFA6CgAooooAKKKKACiiigAooooAKD0NFB6GgAooooAKKKKA CiiigAooooAK
KKKAA9KKD0ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigA
ooooAKKKKACmv2p1NftQBFa/cX/rmv8AKp6gtfuL/wBc1/lU9ABRRRQAUVSy fU0xpUWRUZsM
3Tj+tVyiuaFFUqtQf6paGrBcfRRRUjCgdBRQOgoAKKD0plAD6Kbto2+9ADqK bs96YRg0AS0V
FUo6CgAoPQ0UHoaACiikbpQAtFMxS7aAHUU3b70bPegB1FRUUAS0UUUAB6UU HpRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFNftTqa/ag
CK1+4v8A1zX+VT1Ba/cX/rmv8qnoAKKKKAKYFVpJUaUjJ+Trx6EVbArNJCTz KRuLMckHjrn+
lVIIl2B/OQnGCDjFXIhiMVXsIBHEXznfzg9qtjik2AUUUUgCgdBRQOgoAD0p tOPQ1XdmyVXG
7GeaAJ6KhjZkQB2BPqKUye4oAlpp5JqPzPemeYqsSM5PWgCapB0FVRNlgPU4 q0OgoAKD0NFB
6GgAoPSikb7poASlqu7OwIjI3D17U9XKqAxGfWgCWjNRGT0IpDJ70AP6niio RIqkgZ5OaVJd
zhfWgCzRRRQAHpRQelFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRR
QAUUUUAFFFFABRRRQAU1+1Opr9qAIrX7i/8AXNf5VPUFr9xf+ua/yqegAooo oAqq2KzZEJun
XOSW6/Wtby41PJ/Wsxsf2nx08wCqbEjViURxKm4HAxmpAcjNRlBT0GFApDFo oopAFA6CigdB
QAHoaznk3Tt7cVonkGqVxYLO2S7L6470ARmT1qM3MYODImfQsKeumRwESISz Lzg96ssQqbkC
jPqOtDdgMxb0tIwK/IOAV5/lT/POCwikIAzkL/jSyb1yqlRuOcRnOOP/ANVO jSQKVwcq3GM1
nKbQ0rjbSc3Eo2owXqWYVsDoKhiyYwSu09xjFTDpWggoPQ0UHoaACkY4U5pa RhlSKAM4SFnZ
u5PNKZOOTinT6ckzli7LnqB3psdhHasJF+YdCCO1AEZuY/8AnomfTcKgivS4 JZcDttyf5Vpy
namFCc9Qe9UGD5EQYEZPCYI5/wAmpcgEa4KIzmKXaOp2/wCNSWMpnk3BGVR3 YdaIhJsUhTuX
61op90Hbj2pQlzbjasSUUUVYgPSig9KKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigApr9qdTX7UARWv3F/65r/Kp6gtfuL/ ANc1/lU9ABRR
RQA1lDDBFVRbyLeq+EaPGMnqv+NXKKAExSiiigAooooAKB0FFA6CgAPSm06j AoAbUEkT7SEK
eoDLmrOBRgUAZZFyc4icH1UAfrQIrsjHzgf7cn/6608CjAoAgt4vKjwfvHk8 1YHQUm0UtABQ
ehooPQ0AFB6UUUANoPIxTsCjAoAqyxyBPkKHb0BXnH1qri5IIEci/wC7ha1M CkwKAM0Q3TDB
yB/tyZ/xq7FGIowg7e9S4FG0UALRRRQAHpRQelFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU1+1Opr9qAIrX7i/8AXNf5 VPUFsPkX/rmv
8qnx9fzoAKKMfX86MfX86ACijH1/OjH1/OgAoox9fzox9fzoAKKMfX86MfX8 6ACgdBRj6/nS
AcD/ABoAWijH1/OjH1/OgAoox9fzox9fzoAKKMfX86MfX86ACijH1/OjH1/O gAoPQ0Y+v50h
HB/xoAWijH1/OjH1/OgAoox9fzox9fzoAKKMfX86MfX86ACijH1/OjH1/OgA oox9fzox9fzo
AD0opCP85pcfX86ACijH1/OjH1/OgAoox9fzox9fzoAKKMfX86MfX86ACijH 1/OjH1/OgAoo
x9fzox9fzoAKKMfX86MfX86ACijH1/OjH1/OgAoox9fzox9fzoAKKMfX86Mf X86ACijH1/Oj
H1/OgAoox9fzox9fzoAKKMfX86MfX86ACijH1/OjH1/OgApr9qdj6/nTWHSg D//Z
--------------040409030804030907000905
Content-Type: image/jpeg;
name="mac.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="mac.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDACQZGyAbFyQgHiApJyQrNls7NjIy Nm9PVEJbhHSK
iIF0f32Ro9GxkZrFnX1/tve4xdje6uzqja////7j/9Hl6uH/2wBDAScpKTYw Nms7O2vhln+W
4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh 4eHh4eH/wAAR
CACoAjwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDbbrTfzpXz261HmX+6n/fZ /wAKAH/nR+dM
zL/dT/vs/wCFGZf7qf8AfZ/woAf+dH50zMv91P8Avs/4UZl/up/32f8ACgB/ 50fnTMy/3U/7
7P8AhRmX+6n/AH2f8KAH/nR+dMDSnPypx/tn/CjMv91P++z/AIUAP/Oj86Zm X+6n/fZ/wozL
/dT/AL7P+FAD/wA6PzpmZf7qf99n/CjMv91P++z/AIUAP/Oj86ZmX+6n/fZ/ wozL/dT/AL7P
+FAD/wA6PzpmZf7qf99n/CjMv91P++z/AIUAP/Oj86ZmX+6n/fZ/wozL/dT/ AL7P+FAD/wA6
PzqKR5lAwkZJOOZCP6Uzzbj/AJ5xf9/T/wDE07AWPzo/Oq/m3H/POH/v6f8A 4mjzbj/nnF/3
9P8A8TRZhcsfnR+dV/NuP+ecP/f0/wDxNHm3H/POL/v6f/iaLMLlj86Pzqv5 tx/zzh/7+n/4
mjzbj/nnF/39P/xNFmFyx+dH51X824/55w/9/T/8TR5tx/zzi/7+n/4mizC5 Y/Oj86r+bcf8
84f+/p/+JpySTs2DHEOO0hP/ALLRZhcm/Oj86ZmX+6n/AH2f8KMy/wB1P++z /hSAf+dH50zM
v91P++z/AIUZl/up/wB9n/CgB/50fnTMy/3U/wC+z/hRmX+6n/fZ/wAKAH/n R+dMzL/dT/vs
/wCFGZf7qf8AfZ/woAf+dH50zMv91P8Avs/4UZl/up/32f8ACgB/50fnTMy/ 3U/77P8AhRmX
+6n/AH2f8KAH/nR+dMzL/dT/AL7P+FGZf7qf99n/AAoAf+dH50wNKQDtTn/b P+FGZf7qf99n
/CgB/wCdH50zMv8AdT/vs/4UZl/up/32f8KAH/nR+dMzL/dT/vs/4UZl/up/ 32f8KAH/AJ0f
nTC0oH3U/wC+z/hRmX+6n/fZ/wAKAH/nR+dMzL/dT/vs/wCFGZf7qf8AfZ/w oAf+dH50zMv9
1P8Avs/4UZl/up/32f8ACgB/50fnTMy/3U/77P8AhRmX+6n/AH2f8KAH/nR+ dMzL/dT/AL7P
+FGZf7qf99n/AAoAf+dH50zMv91P++z/AIUZl/up/wB9n/CgB/50fnTMy/3U /wC+z/hRmX+6
n/fZ/wAKAH/nR+dMDSkfdT/vs/4UZl/up/32f8KAH/nR+dMzL/dT/vs/4UZl /up/32f8KAFf
7h6023/494uv3B/KhjJtO5VA9mJ/pRb/APHvF1+4P5U+giVqoC9cRKXjXczs oCk9AT7e1aB6
ioTaREYwR824YYjB749KQxrXCrb+cwIXbuwetVYL1xA+8rLIjKPlIwdxGP5k fhV8woyBGBIG
DySelI9tFI+5lyeOcnscj9aAKj3Uq/aN6KojQNlWyc49xTobgm5lh5Yh88/w rgf1qw9tFIWL
KTvXa3J5FL9mi379vzbt2cnrjH9KAKTXplt5GRWT5Qyt6jP061ezTBaQhGQA 7W6ruOPwHapt
ooAiU8t9admlVeW+v9KdtFAGfa3Ty5MjYEYJIxy3v9Kd9tZYyzxYOzeoDZyP 6HmrK20SlCFw
Uzjk9+tItnCqsoUkEY5Ynj0HpQBALt/M2tCBhwjENnrjGOPehbwkqXj2oxZQ 27PIz2/CrJt4
ySSvJYMee46fypkNmkXJyzZYgknAyc9OlAEH21ljLPFg7N6gNnI/oeaGvSgI aPEgcKBuyORn
rj09qsLZwqpXaSCMcsTx6D0pXtYn3bl5YhsgkHI7+1AFZ75gu4QkgR+Y2TjA 7/yoa7eNptyK
UQqFwTkk4x/OrJtYiGDAncuw5YnI/wAmhrWJyxZc7xg8nn/PrQBXF27CMLCS 7kjBOBx+HT8K
mhl86FJACNwzj0p626KVPzErnBZif506OJY0CIMKOgoAguGwqcH739DUW/2N WZ0yF+v9DUfl
e1aRtYzluU7h3BQrI6hmAIAH+FM+0PHK4ILoNoJJAxmrrQB8bhnByPrSNaox bK/exn8OlPQV
yutzkqNp5cp19M/4VGL1yARD1UsPm7Dr2q0LSMSeZtO4HI5PX6UotEAACcBS o57GgLlT7Uyy
O20tGAp69M09bomQKYyFLlM57jPb8KnNnGTnae3c4OOlO+ypx8vRi34n/wDX QFyobzIcY6bS
CrZyCcelH2pk3kjI8wjLHAAqwLGJeinGAPvHoOlOa0RgQVOCSSAxGaAuJv8A Y06FszDg/dP9
Kd5XtT4o8S5x/Cf6UO1gW5JmqM9xKt2VDsEGz+EbeSc5PWtHbUT2kLyb2Ulu M/McHHTI6Vka
lX7SQ6sxbYDLuzj+E0sc8zTNuRV/dhgpfjqepxVoW0QIO3+8ev8AeOTTPsMG 1l2sQy7Tlz09
OtAEUV0z+Xuj2+YxCkNnIAznp7U37axQFItxCl2BbGBn6e1WDaRFQp3nByDv bI7dc0hsoCip
sIVRgAMRx6e4oAiN5jzCI8ogBznrkZHFR/aZUeXfHkhkUIG45461cNvGQ4K8 Sfe96atpCufl
JyQSSxJJHSgCKO6LOqMmGLMpwcgEVGb9vL3rDkCPzD83QVaa0ibqp+8W4Yjk 9aQWkIQoE+Up
5eMn7vpQBDJdsrsFj3IrqjHdg5OO34imrfBvMxGSqBiD64/CpZbMSTByVABU nAOTg59cfpUg
tYhvwDh85G44568dKAIoLhpHKvHsIUMOc8HP+FT5oWFFbcBglQufYdP50/aK AIkPyLx2qO7k
aO2d0OGHQ4qdFGxfpRJEkiFHGVPUUAVftbecV8r5BII927uRnpUf2tjJHIV2 w7Xbg5yB6irn
2ePJO3ktvPPemrZwq24LzyBkkgZ68UAQLekwtI0RATBbnt69Kmhl82NX2kBu R9O1OW1iVQoD
FQQQCxIGOnU0+OFI12oMDOcUAMY8DjuP507NKy8fiP507aKAKd3K6tCqFxvY g7ACTwT3pjXL
QyPu3PhUChvUk+lW5bdJdu/OVOQQxBH5UhtISCCpOQASWOeOnNAFc3jbU2wk sys2GOMbSPb3
pPt2ELNHj5VZRnOdxwM+n61aFvHxkEkAqCWJOD1/lSG0hKlSnG0J1PQdKAK4 u3YRhYSXckYJ
wOPw6fhTReyMdyxAp5XmY3fN9KtrbopU/MSucFmJ/nSJbRIVKrjYNo5PT+tA Fd74D7i7sttU
54PGT2NBu3ONkJJ8vzCGOCPb61OLOERLGE2qpyuCQQfrT1gRW3AHdt25JJOK AKov0ZyqqSMr
tOfvZ6/lTVvjJCzhGX7pBHcE+4qylpBH5e1APLBC+2etC2kKoUAOw4+XccDH pzxQAyO43zvE
V27emTyffHpU2aBAgk8zkt6licfT0p+0UARKePxP86iupWjhGzhmZVBPbJxm rCrx+J/nRJEk
iFHGVPUUAVXlNurfO8zAr8rYGMnHYf5xSm6Kh90fKFQcN61KLSIZyGYnbksx J4OR1pZLSGR9
7qSeP4iBx04oAg+0s7bfLwhcpu3dxnt+FTW//HvF1+4P5Uz7Ike6Qks28sOT gZ9ulPt/+PeL
r9wfyp9BErgMCCMgjBFQNawbT+6Xp6VYbrTH+43XpSGQfZoP+eSflR9mg/55 J+VSqqtknPXs
xFO8tP8Aa/76NAEH2aD/AJ5J+VH2aD/nkn5VP5af7X/fRo8tP9r/AL6NAEH2 aD/nkn5UfZoP
+eSflU/lp/tf99Gjy0/2v++jQBB9mg/55J+VH2aD/nkn5VP5af7X/fRo8tP9 r/vo0AQfZoP+
eSflR9mg/wCeSflU/lp/tf8AfRo8tP8Aa/76NAEH2aD/AJ5J+VH2aD/nkn5V P5af7X/fRo8t
P9r/AL6NAEH2aD/nkn5UfZoP+eSflU/lp/tf99Gjy0/2v++jQBB9mg/55J+V H2aD/nkn5VP5
af7X/fRo8tP9r/vo0AQfZoP+eSflR9mg/wCeSflU/lp/tf8AfRo8tP8Aa/76 NAEH2WA/8sk4
9qPs0H/PJPyqfy0/2v8Avo0eWn+1/wB9GgCD7NB/zyT8qPs0H/PJPyqfy0/2 v++jR5af7X/f
RoAg+zQf88k/Kj7NB/zyT8qn8tP9r/vo0nlruA+bGD/EaAIfs0H/ADyT8qPs 0H/PJPyqfy0/
2v8Avo0eWn+1/wB9GgCD7NB/zyT8qPs0H/PJPyqfy0/2v++jR5af7X/fRoAg +zQf88k/Kj7N
B/zyT8qn8tP9r/vo0eWn+1/30aAIPs0H/PJPyo+zQf8APJPyqfy0/wBr/vo0 eWn+1/30aAIP
s0H/ADyT8qPs0H/PJPyqfy0/2v8Avo0eWn+1/wB9GgCD7NB/zyT8qPs0H/PJ Pyqfy0/2v++j
R5af7X/fRoAg+zQf88k/Kj7NB/zyT8qn8tP9r/vo0eWn+1/30aAIPs0H/PJP yo+zQf8APJPy
qfy0/wBr/vo0eWn+1/30aAIPs0H/ADyT8qPs0H/PJPyqfy0/2v8Avo0eWn+1 /wB9GgCD7NB/
zyT8qPs0H/PJPyqfy0/2v++jR5af7X/fRoAg+zQf88k/Kj7NB/zyT8qn8tP9 r/vo0eWn+1/3
0aAIPs0H/PJPyo+zQf8APJPyqZo1A43dR/EaXy0/2v8Avo0AQfZoP+eSflR9 mg/55J+VT+Wn
+1/30aPLT/a/76NAEH2aD/nkn5UfZoP+eSflU/lp/tf99Gjy0/2v++jQBB9m g/55J+VH2aD/
AJ5J+VT+Wn+1/wB9Gjy0/wBr/vo0AQfZoP8Ankn5UfZoP+eSflU/lp/tf99G jy0/2v8Avo0A
QfZoP+eSflR9mg/55J+VT+Wn+1/30aPLT/a/76NAEH2aD/nkn5UfZoP+eSfl U/lp/tf99Gjy
0/2v++jQBB9mg/55J+VH2aD/AJ5J+VT+Wn+1/wB9Gjy0/wBr/vo0AQfZoP8A nkn5UfZoP+eS
flU/lp/tf99Gjy0/2v8Avo0AQfZoP+eSflR9mg/55J+VT+Wn+1/30aPLT/a/ 76NAEH2aD/nk
n5UC2h3/AOqXp6VP5af7X/fRpAAJMDPT1oAjMESDcsagjuBTrf8A494uv3B/ KnSfcPWm2/8A
x7xdfuD+VPoImbrTG+4evSnt1pj/AHG69KQwjGQfr/SnbaRUBXPP4E0uwerf 99GgA20baNg9
W/76NGwerf8AfRoANtG2jYPVv++jTWXGMFv++jQA7bRtqBmw6rubn/aNOwfV v++jQBLto21F
/wACb/vo0mQDjc3/AH0aAJttG2odw/vN/wB9Gk3f7TfmaAJ9tG2oN/u3/fRp N/u3/fRoAsba
NtVWkOOGb8zSeY395vzNAFvbRtqn5r/3m/OpYGL7ssxx/tGgCfbRto2D1b/v o0bB6t/30aAD
bRto2D1b/vo0bB6t/wB9GgA20hX5x9D/AEpdg9W/76NHlr/tf99GgA20baNg 9W/76NGwerf9
9GgA20baNg9W/wC+jRsHq3/fRoANtG2kZAB1b/vo1FIdi5y3/fRoAm20bahG f7zf99Gl/Fv+
+jQBLto21CSB1Y/99GjcP7zf99GgCbbRtqHcP7zf99Gk3e7f99GgCfbRtqvv 92/76NIZD6t/
30aALO2jbVMStgfM35mjzG/vN+dAFzbRtqrE5aQAs2D7mrIQY6t/30aAF20b aNg9W/76NGwe
rf8AfRoANtG2jYPVv++jRsHq3/fRoARl4/EfzpdtHlr/ALX/AH0aNg9W/wC+ jQAbaNtGwerf
99GjYPVv++jQAbaNtGwerf8AfRo2D1b/AL6NABto20bB6t/30aNg9W/76NAB to20bB6t/wB9
Gq4Lf3m/M00rgWNtG2oRk/xN+Zqhe3E6XGyKZlAAz3osBq7aNtYyXVwSQZmN aVmWkt1aRmLc
5+Y0gJ9tG2jYPVv++jRsHq3/AH0aADbRto2D1b/vo0bB6t/30aADbRto2D1b /vo0xhhwAWx/
vGgB+2mdJPwpwQY6t/30abjEnfp60AD/AHD1ptv/AMe8XX7g/lTpPuHrTbf/ AI94uv3B/Kn0
ETN1pj/cbr0p7daY/wBxuvSkMen3BS0ifdFLQAUUUUAFI1LSEZoAz7h9z5HQ U/fU32OM/wAT
fpTvsqf3moAr7qazd/Sp5IUTH3jn3pnlp/tfn/8AWp2AZvpN1OkSOOJnwxCj P3v/AK1UftQd
GBhdc8ZEo/woAtGVd2Nwz6Z5oLVThtLeWZE2ygtzneP/AImtX7FH/ef8xSAq lsmgmrX2KP8A
vP8AmKDZIekkg+mP8KAKmantTy1KdPQ9ZpvzH+FTxQJEoVST7nqaAJaKKKAC iiigAooooAKK
KKACiiigBD0qpdN0Tv1NW2+6arSxoSXYtn6//WoAhjf5AM07dT1hQDHzfn/9 al8lP9r8/wD6
1AERbIpA/FTeSn+1+dJ5Ef8AtfnQBFvpGlVfvMBn1OKm8mP1b8//AK1Vn0y3 dyzPKSf9of4U
AP38U0txUkdrDEgQM5A9SP8AClMMXq/5j/CgCLPFJmpCkZHBcfiP8KYYUP8A y0m/76H+FADo
T+9WtBfuiqVskaPgbyT3Zs/0q6vSgBaKKKACiiigAooooAKKKKACiiigAoph f2pqzbgCB196
AJaqip/M9qj2r7/nTQmCkVjztuuJG/2jWxhff86gls4ZX3HcPZSP8KGBmqMM fcVrWH/HsPqa
jW1hQg/Mcc8kf4VZ81QMAUhktAqEzj0pBcAZG39aAJ6Kg+1D+7+tJ9q5+5+t AFio3++PpTwc
0x/vj6UAPXpTD/rfwp69KYf9b+FACP8AcPWm2/8Ax7xdfuD+VOk+4etNt/8A j3i6/cH8qfQR
M3WmP9xuvSnt1pj/AHG69KQx6fcFLSJ9wUtABRRRQAUUUEgdaACimmRR3o3r 60AMn/hqMVJL
h8YI49aZs9xVLYRBqDbbTH95gKyyPlIHpWvc24njxuG4cr6ZqounyZ5eP8z/ AIUhiWh/0mP6
1sVStrVIsM5y4PGOlW96+tIB1FMMij+IUedH/e/SgB9FR+fH/e/SnLIrZ2nO KAHUUUUAFFFF
ABRRRQAUUUUAFFFFACN0qrdH5AO5NWm6GqksTO5bcuO3X/CgBI5SUGetL5h9 aasDAY3L+v8A
hTvIb+8v60AIXJHWkD5FL5Df3l/Wj7O395f1oATfSbqXyG/vL+tVZbO8dyRP Gq9gCR/SgCxv
ppeiO2lEYEkkZbuRn/CnG3bu6fr/AIUANzwKTNOMTY4ZD+JH9KYY5ezQ/wDf Tf4UASQn98tX
1+7VG1iO/MjoWHQLn/Cry9KAFooooAKKKKACiiigAooooAKKKKAIZSFRjVWG QgFewqe6Q7Ax
ZQq9c5qqpQEnzV/I/wCFAE/mH1o3n1qLcn/PVfyP+FGU/wCei/kf8KYDw/bN G+mAAniRf1/w
pdoP/LRf1/wpAO30m+q9xFM5AjnjVe/XJP5UkEUqKRLOjDt1/wAKLoLE5ekD daRU3nCyIT07
/wCFS/ZZAOGT8z/hQBFmgmhoZR3i/Fj/AIVHZkXUpVZY2C8sFDZ/UUAasZyK a/3x9Keq7RTH
++PpQA9elMP+t/Cnr0ph/wBb+FACP9w9abb/APHvF1+4P5U6T7h6023/AOPe Lr9wfyp9BEzd
aY/3G69Ke3WmN9w9elIY9PuClpE+6KWgAooooAKa/anUjfTNAFOd9kqd8Dmn +YPSoHSVyWKP
k+xp+x/7jflQBJ5ntSGQ59qZsk/uN+VIUcj7jflQBJ5hpN5qPZJ/cb8qRlkV SfLc4GcBTmgC
TfSF6o+ddlv+POTb/unP8qtFJP8Anm//AHyaAFZ6N1N8uTP+rf8A75oKuP8A lnJ+CE/0oAXd
U9qclh9KqEv/AM8Zj/2zNW7WNwpZlK57Ec0AW6KKKACiiigAooooAKKKKACi iigBG+6arXJx
Hx3NWT0qnOHeTARio9qAHJKGUHFL5ntUKJIF5Rvyp2x/7jflQA8yHHFHmZqP ZJ/cb8qQJION
jflQBJvPrSb/AHpmyT+435VVllug5EdrIQOMlDzQBcL00vUcYmeMM0LqT1BU 0pSQ/wDLN/8A
vk0AODcCk3UhRx1jf/vkmmkv/wA8pT/2zNAE0Lfvlq8vSqFsjs+4xuoH94Yz V9fu0ALRRRQA
UUUUAFFFFABRRRQAUUUUAQXv/Hq/4fzrLrVu1LWzhQSeOB9azfIl/wCeT/8A fJqkA0U4c0oh
l/55v/3yackMgYHy3/KgB6jaCfQUuMGlkSTYcIxJI6CnGN8/db8qkCFxxnNI 6fuyVHI5qYxO
QQVbp6UeW/8Acb8qAI+vI/CpFmdRgnIpDG4HCN+VHkv1Kt+VADWkyaqeH/8A j5uPp/WrRik/
55v/AN81BocM0V1MZInQEcFlIzzTYG1Ub/fH0qSo3++PpSAevSmH/W/hT16U w/638KAEf7h6
023/AOPeLr9wfyp0n3D1ptv/AMe8XX7g/lT6CJm60x/uN16U9utMf7jdelIY 9PuClpE+4KWg
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiig
AooooAKKKKACiiigAooooAKjf74+lSVG/wB8fSgB69KYf9b+FPXpTD/rfwoA R/uHrTbf/j3i
6/cH8qdJ9w9abb/8e8XX7g/lT6CJm60x/uN16U9utMb7h69KQx6fcFLUChCX LDJ/+tWT5rTz
kszLGDwFOKqMeYTdjdorH2x/3pP++mpdkf8Aek/76aq9mTzo16Kx9sefvSf9 9Gl2R/3pP++m
o9mHOjXorH2x5+9J/wB9Gl2R/wB6T/vpqPZhzo16Kx9sefvSf99Gl2R/3pP+ +mo9mHOjXorH
2x5+9J/30aXZH/ek/wC+mo9mHOjXorH2x5+9J/30aXZH/ek/76aj2Yc6Neis fbHn70n/AH0a
XZH/AHpP++mo9mHOjXorH2x5+9J/30aXZH/ek/76aj2Yc6NeisfbHn70n/fR pdkf96T/AL6a
j2Yc6NeisfbHn70n/fRpdkf96T/vpqPZhzo16Kx9sefvSf8AfRpdkf8Aek/7 6aj2Yc6Neisf
bHn70n/fRpdkf96T/vpqPZhzo16Kx9sefvSf99Gl2R/3pP8AvpqPZhzo16Kx 9sefvSf99Gl2
R/3pP++mo9mHOjXorH2x5+9J/wB9Gl2R/wB6T/vpqPZhzo16Kx9sefvSf99G l2R/3pP++mo9
mHOjXorH2x5+9J/30aXZH/ek/wC+mo9mHOjXorH2x5+9J/30aXZH/ek/76aj 2Yc6NeisfbHn
70n/AH0aXZH/AHpP++mo9mHOjXorH2x5+9J/30aXZH/ek/76aj2Yc6Neisfb Hn70n/fRpdkf
96T/AL6aj2Yc6NeisfbHn70n/fRpdkf96T/vpqPZhzo16Kx9sefvSf8AfRpd kf8Aek/76aj2
Yc6NeisfbHn70n/fRpdkf96T/vpqPZhzo16Kx9sefvSf99Gl2R/3pP8AvpqP Zhzo16Kx9sef
vSf99Gl2R/3pP++mo9mHOjXorH2x5+9J/wB9Gl2R/wB6T/vpqPZhzo16Kwp/ kGYpJAw9WJH6
1ftMz26uRz0NKUGlcakmXqKr+TR5NQUWKKqPFgU6DayneBkHGaALNFVIp7aa cxR/NgZLdqlV
I8twOD/QUATVG/3x9Kgtp7a5Hy4Dd1PWp4gBuCjA3f0FAD16Uw/638KkqM/6 38KAEf7h6023
/wCPeLr9wfyp0n3D1ptv/wAe8XX7g/lT6CJmprDKkc8inNTfzpDGpjnPBqgb Z4JW2oXQnIx1
FaOAe1GB6U02thNJlDn/AJ4SfkKdnj/USfkP8au4HpRgelPnZPIijzn/AFEn 5Clzx/qJPyH+
NXcD0owPSjnY+RFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORFHnP8AqJPy FLnj/USfkP8A
GruB6UYHpRzsORFHnP8AqJPyFLnj/USfkP8AGruB6UYHpRzsORGc8bycLCy+ 7Veto1hhVPTr
T8D0owPShyb3GopDty0blpuB6UYHpUjGyHI4HNESKiYJyScmnYHpRgelADFg hSYyqAHIwcd6
eAoLc9T/AEowPSjA9KAGQwQwLtjUD37mpEwM896TA9KMD0oAdkeopnWQkdMU uB6UfnQA1/uH
rTbf/j3i6/cH8qdJ9w9abb/8e8XX7g/lT6CHmRT3pN6+pooquVE8wb19TRvX 1NFFHKg5g3r6
mjevqaKKOVBzBvX1NG9fU0UUcqDmDevqaN6+pooo5UHMG9fU0b19TRRRyoOY N6+po3r6miij
lQcwb19TRvX1NFFHKg5g3r6mjevqaKKOVBzBvX1NG9fU0UUcqDmDevqaN6+p ooo5UHMG9fU0
b19TRRRyoOYN6+po3r6miijlQcwb19TRvX1NFFHKg5g3r6mjevqaKKOVBzBv X1NG9fU0UUcq
DmDevqaN6+pooo5UHMG9fU0b19TRRRyoOYN6+po3r6miijlQcwb19TRvX1NF FHKg5g3r6mje
vqaKKOVBzBvX1NG9fU0UUcqDmDevqaN6+pooo5UHMG9fU0b19TRRRyoOYN6+ po3r6miijlQc
wb19TRvX1NFFHKg5g3r6mjevqaKKOVBzBvX1NG9fU0UUcqDmDevqaN6+pooo 5UHMG9fU0b19
TRRRyoOYN6+po3r6miijlQcwb19TRvX1NFFHKg5g3r6mjevqaKKOVBzBvX1N G9fU0UUcqDmD
evqaN6+pooo5UHMI7qVIBpLf/j3i6/cH8qKKUlYpO5//2Q==
--------------040409030804030907000905--
Re: how to prevent stretching of images in swt table [message #445095 is a reply to message #445059] Mon, 25 October 2004 20:03 Go to previous messageGo to next message
Steve Northover is currently offline Steve NorthoverFriend
Messages: 1636
Registered: July 2009
Senior Member
Oops ... enter a bug report. Thanks.

"Yves Harms" <user@domain.invalid> wrote in message
news:clj0gc$5nn$1@eclipse.org...
> Thanks for the example, it works great with Winxp.
> Under Mac OS X however, the output is completly unuseable
> (see Screenshots: winXp and Mac).
> Is this a general bug ?
>
> Yves
>
>
>
> Veronika Irvine wrote:
> > Images in the table are always the same size as the first image placed
in
> > the table. The operating system performs the scaling.. To manage the
> > stretching of the images to maintain the origianl proportion, you need
to
> > scale the image yourself before placing it in the table. See the
example
> > below:
> >
> > public static void main (String [] args) {
> > Display display = new Display ();
> > final Image image1 = createImage (display, 20, 30);
> > final Image image2 = createImage (display, 16, 16);
> > final Image image3 = createImage (display, 300, 100);
> > final Image adjustedImage1 = scaleTo16x16 (image1, display);
> > final Image adjustedImage2 = scaleTo16x16 (image2, display);
> > final Image adjustedImage3 = scaleTo16x16 (image3, display);
> > Shell shell = new Shell (display);
> > shell.setLayout (new FillLayout ());
> > Table table = new Table (shell, SWT.BORDER);
> > for (int i = 0; i < 10; i++) {
> > TableItem item = new TableItem (table, SWT.NONE);
> > item.setText ("item " + i);
> > if (i % 3 == 0) {
> > item.setImage (adjustedImage1);
> > } else if (i % 3 == 1) {
> > item.setImage (adjustedImage2);
> > } else {
> > item.setImage (adjustedImage3);
> > }
> > }
> > Canvas canvas = new Canvas (shell, SWT.NONE);
> > canvas.addPaintListener (new PaintListener () {
> > public void paintControl (PaintEvent e) {
> > int x = 0, y = 0;
> > e.gc.drawImage (image1, x, y);
> > e.gc.drawImage (adjustedImage1, x, y + 100);
> > x += image1.getBounds ().width + 20;
> > e.gc.drawImage (image2, x, y);
> > e.gc.drawImage (adjustedImage2, x, y + 100);
> > x += image2.getBounds ().width + 20;
> > e.gc.drawImage (image3, x, y);
> > e.gc.drawImage (adjustedImage3, x, y + 100);
> > }
> > });
> > shell.open ();
> > while (!shell.isDisposed ()) {
> > if (!display.readAndDispatch ()) display.sleep ();
> > }
> > image1.dispose ();
> > image2.dispose ();
> > image3.dispose ();
> > adjustedImage1.dispose ();
> > adjustedImage2.dispose ();
> > adjustedImage3.dispose ();
> > display.dispose ();
> > }
> >
> > static Image scaleTo16x16 (Image image, Display display) {
> > Image result = new Image (display, 16, 16);
> > Rectangle bounds = image.getBounds ();
> > double scaleX = bounds.width <= 16 ? 1.0 : 16.0 / bounds.width;
> > double scaleY = bounds.height <= 16 ? 1.0 : 16.0 /
bounds.height;
> > double scale = Math.min (scaleX, scaleY);
> > int width = (int) (scale * bounds.width);
> > int height = (int) (scale * bounds.height);
> > GC gc = new GC (result);
> > gc.drawImage (image, 0, 0, bounds.width, bounds.height, (16 -
> > width) / 2, (16 - height) / 2, width, height);
> > gc.dispose ();
> > return result;
> > }
> >
> > static Image createImage (Display display, int width, int height) {
> > Image image = new Image (display, width, height);
> > GC gc = new GC (image);
> > gc.setBackground (display.getSystemColor (SWT.COLOR_RED));
> > gc.fillOval (0, 0, width, height);
> > gc.dispose ();
> > return image;
> > }
> >
> >
> > "Yves Harms" <user@domain.invalid> wrote in message
> > news:clalqg$nvm$1@eclipse.org...
> >
> >>Hi,
> >>when inserting images into a table all images will be resized to one
size.
> >>If the images have different aspect ratios they will be streched.
> >>How can i prevent this stretching ?
> >>
> >>Yves Harms
> >
> >
> >
>
>


------------------------------------------------------------ ----------------
----






------------------------------------------------------------ ----------------
----
Re: how to prevent stretching of images in swt table [message #445098 is a reply to message #445095] Tue, 26 October 2004 07:29 Go to previous message
Yves Harms is currently offline Yves HarmsFriend
Messages: 80
Registered: July 2009
Member
https://bugs.eclipse.org/bugs/show_bug.cgi?id=76996


Steve Northover wrote:
> Oops ... enter a bug report. Thanks.
>
> "Yves Harms" <user@domain.invalid> wrote in message
> news:clj0gc$5nn$1@eclipse.org...
>
>>Thanks for the example, it works great with Winxp.
>>Under Mac OS X however, the output is completly unuseable
>>(see Screenshots: winXp and Mac).
>>Is this a general bug ?
>>
>>Yves
>>
>>
>>
>>Veronika Irvine wrote:
>>
>>>Images in the table are always the same size as the first image placed
>
> in
>
>>>the table. The operating system performs the scaling.. To manage the
>>>stretching of the images to maintain the origianl proportion, you need
>
> to
>
>>>scale the image yourself before placing it in the table. See the
>
> example
>
>>>below:
>>>
>>>public static void main (String [] args) {
>>> Display display = new Display ();
>>> final Image image1 = createImage (display, 20, 30);
>>> final Image image2 = createImage (display, 16, 16);
>>> final Image image3 = createImage (display, 300, 100);
>>> final Image adjustedImage1 = scaleTo16x16 (image1, display);
>>> final Image adjustedImage2 = scaleTo16x16 (image2, display);
>>> final Image adjustedImage3 = scaleTo16x16 (image3, display);
>>> Shell shell = new Shell (display);
>>> shell.setLayout (new FillLayout ());
>>> Table table = new Table (shell, SWT.BORDER);
>>> for (int i = 0; i < 10; i++) {
>>> TableItem item = new TableItem (table, SWT.NONE);
>>> item.setText ("item " + i);
>>> if (i % 3 == 0) {
>>> item.setImage (adjustedImage1);
>>> } else if (i % 3 == 1) {
>>> item.setImage (adjustedImage2);
>>> } else {
>>> item.setImage (adjustedImage3);
>>> }
>>> }
>>> Canvas canvas = new Canvas (shell, SWT.NONE);
>>> canvas.addPaintListener (new PaintListener () {
>>> public void paintControl (PaintEvent e) {
>>> int x = 0, y = 0;
>>> e.gc.drawImage (image1, x, y);
>>> e.gc.drawImage (adjustedImage1, x, y + 100);
>>> x += image1.getBounds ().width + 20;
>>> e.gc.drawImage (image2, x, y);
>>> e.gc.drawImage (adjustedImage2, x, y + 100);
>>> x += image2.getBounds ().width + 20;
>>> e.gc.drawImage (image3, x, y);
>>> e.gc.drawImage (adjustedImage3, x, y + 100);
>>> }
>>> });
>>> shell.open ();
>>> while (!shell.isDisposed ()) {
>>> if (!display.readAndDispatch ()) display.sleep ();
>>> }
>>> image1.dispose ();
>>> image2.dispose ();
>>> image3.dispose ();
>>> adjustedImage1.dispose ();
>>> adjustedImage2.dispose ();
>>> adjustedImage3.dispose ();
>>> display.dispose ();
>>>}
>>>
>>>static Image scaleTo16x16 (Image image, Display display) {
>>> Image result = new Image (display, 16, 16);
>>> Rectangle bounds = image.getBounds ();
>>> double scaleX = bounds.width <= 16 ? 1.0 : 16.0 / bounds.width;
>>> double scaleY = bounds.height <= 16 ? 1.0 : 16.0 /
>
> bounds.height;
>
>>> double scale = Math.min (scaleX, scaleY);
>>> int width = (int) (scale * bounds.width);
>>> int height = (int) (scale * bounds.height);
>>> GC gc = new GC (result);
>>> gc.drawImage (image, 0, 0, bounds.width, bounds.height, (16 -
>>>width) / 2, (16 - height) / 2, width, height);
>>> gc.dispose ();
>>> return result;
>>>}
>>>
>>>static Image createImage (Display display, int width, int height) {
>>> Image image = new Image (display, width, height);
>>> GC gc = new GC (image);
>>> gc.setBackground (display.getSystemColor (SWT.COLOR_RED));
>>> gc.fillOval (0, 0, width, height);
>>> gc.dispose ();
>>> return image;
>>>}
>>>
>>>
>>>"Yves Harms" <user@domain.invalid> wrote in message
>>>news:clalqg$nvm$1@eclipse.org...
>>>
>>>
>>>>Hi,
>>>>when inserting images into a table all images will be resized to one
>
> size.
>
>>>>If the images have different aspect ratios they will be streched.
>>>>How can i prevent this stretching ?
>>>>
>>>>Yves Harms
>>>
>>>
>>>
>>
>
>
> ------------------------------------------------------------ ----------------
> ----
>
>
>
>
>
>
> ------------------------------------------------------------ ----------------
> ----
>
>
>
>
>
Previous Topic:password style cells in table
Next Topic:Mac OSX SWT/AWT interoperating
Goto Forum:
  


Current Time: Fri Apr 19 23:35:02 GMT 2024

Powered by FUDForum. Page generated in 0.03778 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top