Web Design Web Design Forum
Registration is free! Here you can view your subscribed threads, work with private messages and edit your profile and preferences Calendar Find other members Frequently Asked Questions Search
Home Web Design

Convenient web based access to our favorite web design Usenet groups

web design reviews

This is Interesting: Free Magazines for Graphics designers and webmasters  





Pages (2): [1] 2 »   Last Thread  Next Thread
Author
Thread Post New Thread   

Multiple rotations
 

Captain Blammo




quote this post edit post

IP Loged report this post

Old Post  06-01-04 - 12:14 AM  
I've been trying to take an image and produce 359 rotated versions of it (1
degree increments, of course). However, I just can't figure out how to
automate it. I managed to rotate one image 359 times and save it on top of
itself, but that wasn't so helpful.

I know that I could do it by rotating previous rotations if I kept at it,
but that's a really good way to mess up the image quality. What I really
need to do is rotate by 1 degree, save, rotate by 2 degrees, save, rotate by
3 degrees, etc.

Just to clarify, I should have 360 files at the end of the process
(including the original).

Any help is greatly appreciated!

Ewan







Post Follow-Up to this message ]
Re: Multiple rotations
 

jjs




quote this post edit post

IP Loged report this post

Old Post  06-01-04 - 12:14 AM  
In article <PJJuc.51204$Np3.2222466@ursa-nb00s0.nbnet.nb.ca>, "Captain
Blammo" <eas6@nbnet.nb.ca> wrote:

> I've been trying to take an image and produce 359 rotated versions of it (
1
> degree increments, of course). However, I just can't figure out how to
> automate it. I managed to rotate one image 359 times and save it on top of
> itself, but that wasn't so helpful.
>
> I know that I could do it by rotating previous rotations if I kept at it,
> but that's a really good way to mess up the image quality. What I really
> need to do is rotate by 1 degree, save, rotate by 2 degrees, save, rotate 
by
> 3 degrees, etc.
>
> Just to clarify, I should have 360 files at the end of the process
> (including the original).

Imageready comes with Photoshop. Try it. There should be an action called
"SPIN". It will create a new layer for each interation. Modify as
neccessary. (If you have CS you can save each layer as a separate file
rather than one big with 360 layers.)


Post Follow-Up to this message ]
Re: Multiple rotations
 

Captain Blammo




quote this post edit post

IP Loged report this post

Old Post  06-01-04 - 12:14 AM  
> Imageready comes with Photoshop. Try it. There should be an action called
> "SPIN". It will create a new layer for each interation. Modify as
> neccessary. (If you have CS you can save each layer as a separate file
> rather than one big with 360 layers.)

The "Spin" action seems to be what I'm after, apart from that it spins in
the wrong direction, and the angular increments are too large. Also, I
couldnt figure out how to save each layer as a file.

Is there no way to use scripting of some sort to do this? I looked for ways
to use Photoshop's tools from the command line, but couldn't find anything.

Something like this would do the job in an incredibly simple fashion:

for(count=1; count<360; count=count+1)
{
open(picname.psd);
rotate(count);
save(picname + count +, GIF);
close(picname.psd);
}

Is there nothing of the sort available? It seems like an awful waste of time
to record an action with me rotating a picture 360 times and saving it.

Ewan




Post Follow-Up to this message ]
Re: Multiple rotations
 

jjs




quote this post edit post

IP Loged report this post

Old Post  06-01-04 - 12:14 AM  
In article <NALuc.51262$Np3.2224348@ursa-nb00s0.nbnet.nb.ca>, "Captain
Blammo" <eas6@nbnet.nb.ca> wrote:

> The "Spin" action seems to be what I'm after, apart from that it spins in
> the wrong direction, and the angular increments are too large. Also, I
> couldnt figure out how to save each layer as a file.
>
> Is there no way to use scripting of some sort to do this? I looked for way
s
> to use Photoshop's tools from the command line, but couldn't find anything.[/color
]

It's my day off so I'm not near my workstation so forgive if I'm not
perfectly accurate, but in ImageReady you can change that action to a
whatever increment you want, and in any direction you want. To do that,
just double-click on the action part named "Angle:" and type in the
degrees you want in MINUS degrees for counter-clockwise. For example,
instead of 20 type in -20.

Regarding the saving of layers, it's been covered here. I only got CS an
hour before I left work Friday so I can't swear that it does that (but I'd
bet a beer it does, possibly under an 'export' menu item), and regardless
you can download a trial of a program that does exactly that via
drag-n-drop here: http://www.metadma.com/LayerSplitter.html

Sometimes it's okay to drop the compulsion to program and to do with what
you have when the outcome is adequate. Or read the documentation. RTFM!

It took me longer to type the above than to cut the ImageReady adjustments
neccessary to do what you need to do. But for the program-compulsive, this
is the outcome. Use a text editing macro. Knock yourself out.

// Action file - Generated by Adobe ImageReady 2.0
// =========================================================================
==
{
action = new Action("Spin");
action.expanded = true;
action.runInBackground = false;
action.saveSource = false;
action.saveTarget = true;
action.targetLocation = tlSourceFolder;
action.dupFileNameBehavior = dfnAdd2Digits;
action.windowsFileNaming = true;
action.macFileNaming = true;
action.unixFileNaming = true;
action.displayImages = false;
action.pauseBeforeSave = false;
action.errorBehavior = dfnOverwriteConfirm;
action.version = 2;

step1 = new CopyLayerSet;
step1.enabled = true;
step1.doDialog = false;
step1.expanded = false;
action.AddStep(step1);

step2 = new LayerVisibility;
step2.enabled = true;
step2.doDialog = false;
step2.expanded = false;
step2.visible = false;
step2.toggleOthers = false;
action.AddStep(step2);

step3 = new DuplicateLayer;
step3.enabled = true;
step3.doDialog = false;
step3.expanded = false;
action.AddStep(step3);

step4 = new LayerVisibility;
step4.enabled = true;
step4.doDialog = false;
step4.expanded = false;
step4.visible = true;
step4.toggleOthers = false;
action.AddStep(step4);

step5 = new TransformLayer;
step5.enabled = true;
step5.doDialog = false;
step5.expanded = false;
step5.positionX = 0.000000;
step5.positionY = 0.000000;
step5.positionMode = ePositionRelative;
step5.percentage = 1.000000;
step5.horzSkew = 0.000000;
step5.vertSkew = 0.000000;
step5.rotation = 30.000000;
action.AddStep(step5);

step6 = new CopyLayerSet;
step6.enabled = true;
step6.doDialog = false;
step6.expanded = false;
action.AddStep(step6);

step7 = new LayerVisibility;
step7.enabled = true;
step7.doDialog = false;
step7.expanded = false;
step7.visible = false;
step7.toggleOthers = false;
action.AddStep(step7);

step8 = new SelectBackwardLayer;
step8.enabled = true;
step8.doDialog = false;
step8.expanded = false;
action.AddStep(step8);

step9 = new DuplicateLayer;
step9.enabled = true;
step9.doDialog = false;
step9.expanded = false;
action.AddStep(step9);

step10 = new LayerVisibility;
step10.enabled = true;
step10.doDialog = false;
step10.expanded = false;
step10.visible = true;
step10.toggleOthers = false;
action.AddStep(step10);

step11 = new TransformLayer;
step11.enabled = true;
step11.doDialog = false;
step11.expanded = true;
step11.positionX = 0.000000;
step11.positionY = 0.000000;
step11.positionMode = ePositionRelative;
step11.percentage = 1.000000;
step11.horzSkew = 0.000000;
step11.vertSkew = 0.000000;
step11.rotation = 60.000000;
action.AddStep(step11);

step12 = new CopyLayerSet;
step12.enabled = true;
step12.doDialog = false;
step12.expanded = false;
action.AddStep(step12);

step13 = new LayerVisibility;
step13.enabled = true;
step13.doDialog = false;
step13.expanded = false;
step13.visible = false;
step13.toggleOthers = false;
action.AddStep(step13);

step14 = new SelectBackwardLayer;
step14.enabled = true;
step14.doDialog = false;
step14.expanded = false;
action.AddStep(step14);

step15 = new DuplicateLayer;
step15.enabled = true;
step15.doDialog = false;
step15.expanded = false;
action.AddStep(step15);

step16 = new LayerVisibility;
step16.enabled = true;
step16.doDialog = false;
step16.expanded = false;
step16.visible = true;
step16.toggleOthers = false;
action.AddStep(step16);

step17 = new TransformLayer;
step17.enabled = true;
step17.doDialog = false;
step17.expanded = false;
step17.positionX = 0.000000;
step17.positionY = 0.000000;
step17.positionMode = ePositionRelative;
step17.percentage = 1.000000;
step17.horzSkew = 0.000000;
step17.vertSkew = 0.000000;
step17.rotation = 90.000000;
action.AddStep(step17);

step18 = new CopyLayerSet;
step18.enabled = true;
step18.doDialog = false;
step18.expanded = false;
action.AddStep(step18);

step19 = new LayerVisibility;
step19.enabled = true;
step19.doDialog = false;
step19.expanded = false;
step19.visible = false;
step19.toggleOthers = false;
action.AddStep(step19);

step20 = new SelectBackwardLayer;
step20.enabled = true;
step20.doDialog = false;
step20.expanded = false;
action.AddStep(step20);

step21 = new DuplicateLayer;
step21.enabled = true;
step21.doDialog = false;
step21.expanded = false;
action.AddStep(step21);

step22 = new LayerVisibility;
step22.enabled = true;
step22.doDialog = false;
step22.expanded = false;
step22.visible = true;
step22.toggleOthers = false;
action.AddStep(step22);

step23 = new TransformLayer;
step23.enabled = true;
step23.doDialog = false;
step23.expanded = false;
step23.positionX = 0.000000;
step23.positionY = 0.000000;
step23.positionMode = ePositionRelative;
step23.percentage = 1.000000;
step23.horzSkew = 0.000000;
step23.vertSkew = 0.000000;
step23.rotation = 120.000000;
action.AddStep(step23);

step24 = new CopyLayerSet;
step24.enabled = true;
step24.doDialog = false;
step24.expanded = false;
action.AddStep(step24);

step25 = new LayerVisibility;
step25.enabled = true;
step25.doDialog = false;
step25.expanded = false;
step25.visible = false;
step25.toggleOthers = false;
action.AddStep(step25);

step26 = new SelectBackwardLayer;
step26.enabled = true;
step26.doDialog = false;
step26.expanded = false;
action.AddStep(step26);

step27 = new DuplicateLayer;
step27.enabled = true;
step27.doDialog = false;
step27.expanded = false;
action.AddStep(step27);

step28 = new LayerVisibility;
step28.enabled = true;
step28.doDialog = false;
step28.expanded = false;
step28.visible = true;
step28.toggleOthers = false;
action.AddStep(step28);

step29 = new TransformLayer;
step29.enabled = true;
step29.doDialog = false;
step29.expanded = false;
step29.positionX = 0.000000;
step29.positionY = 0.000000;
step29.positionMode = ePositionRelative;
step29.percentage = 1.000000;
step29.horzSkew = 0.000000;
step29.vertSkew = 0.000000;
step29.rotation = 150.000000;
action.AddStep(step29);

step30 = new CopyLayerSet;
step30.enabled = true;
step30.doDialog = false;
step30.expanded = false;
action.AddStep(step30);

step31 = new LayerVisibility;
step31.enabled = true;
step31.doDialog = false;
step31.expanded = false;
step31.visible = false;
step31.toggleOthers = false;
action.AddStep(step31);

step32 = new SelectBackwardLayer;
step32.enabled = true;
step32.doDialog = false;
step32.expanded = false;
action.AddStep(step32);

step33 = new DuplicateLayer;
step33.enabled = true;
step33.doDialog = false;
step33.expanded = false;
action.AddStep(step33);

step34 = new LayerVisibility;
step34.enabled = true;
step34.doDialog = false;
step34.expanded = false;
step34.visible = true;
step34.toggleOthers = false;
action.AddStep(step34);

step35 = new TransformLayer;
step35.enabled = true;
step35.doDialog = false;
step35.expanded = false;
step35.positionX = 0.000000;
step35.positionY = 0.000000;
step35.positionMode = ePositionRelative;
step35.percentage = 1.000000;
step35.horzSkew = 0.000000;
step35.vertSkew = 0.000000;
step35.rotation = 180.000000;
action.AddStep(step35);

step36 = new CopyLayerSet;
step36.enabled = true;
step36.doDialog = false;
step36.expanded = false;
action.AddStep(step36);

step37 = new LayerVisibility;
step37.enabled = true;
step37.doDialog = false;
step37.expanded = false;
step37.visible = false;
step37.toggleOthers = false;
action.AddStep(step37);

step38 = new SelectBackwardLayer;
step38.enabled = true;
step38.doDialog = false;
step38.expanded = false;
action.AddStep(step38);

step39 = new DuplicateLayer;
step39.enabled = true;
step39.doDialog = false;
step39.expanded = false;
action.AddStep(step39);

step40 = new LayerVisibility;
step40.enabled = true;
step40.doDialog = false;
step40.expanded = false;
step40.visible = true;
step40.toggleOthers = false;
action.AddStep(step40);

step41 = new TransformLayer;
step41.enabled = true;
step41.doDialog = false;
step41.expanded = false;
step41.positionX = 0.000000;
step41.positionY = 0.000000;
step41.positionMode = ePositionRelative;
step41.percentage = 1.000000;
step41.horzSkew = 0.000000;
step41.vertSkew = 0.000000;
step41.rotation = 210.000000;
action.AddStep(step41);

step42 = new CopyLayerSet;
step42.enabled = true;
step42.doDialog = false;
step42.expanded = false;
action.AddStep(step42);

step43 = new LayerVisibility;
step43.enabled = true;
step43.doDialog = false;
step43.expanded = false;
step43.visible = false;
step43.toggleOthers = false;
action.AddStep(step43);

step44 = new SelectBackwardLayer;
step44.enabled = true;
step44.doDialog = false;
step44.expanded = false;
action.AddStep(step44);

step45 = new DuplicateLayer;
step45.enabled = true;
step45.doDialog = false;
step45.expanded = false;
action.AddStep(step45);

step46 = new LayerVisibility;
step46.enabled = true;
step46.doDialog = false;
step46.expanded = false;
step46.visible = true;
step46.toggleOthers = false;
action.AddStep(step46);

step47 = new TransformLayer;
step47.enabled = true;
step47.doDialog = false;
step47.expanded = false;
step47.positionX = 0.000000;
step47.positionY = 0.000000;
step47.positionMode = ePositionRelative;
step47.percentage = 1.000000;
step47.horzSkew = 0.000000;
step47.vertSkew = 0.000000;
step47.rotation = 240.000000;
action.AddStep(step47);

step48 = new CopyLayerSet;
step48.enabled = true;
step48.doDialog = false;
step48.expanded = false;
action.AddStep(step48);

step49 = new LayerVisibility;
step49.enabled = true;
step49.doDialog = false;
step49.expanded = false;
step49.visible = false;
step49.toggleOthers = false;
action.AddStep(step49);

step50 = new SelectBackwardLayer;
step50.enabled = true;
step50.doDialog = false;
step50.expanded = false;
action.AddStep(step50);

step51 = new DuplicateLayer;
step51.enabled = true;
step51.doDialog = false;
step51.expanded = false;
action.AddStep(step51);

step52 = new LayerVisibility;
step52.enabled = true;
step52.doDialog = false;
step52.expanded = false;
step52.visible = true;
step52.toggleOthers = false;
action.AddStep(step52);

step53 = new TransformLayer;
step53.enabled = true;
step53.doDialog = false;
step53.expanded = false;
step53.positionX = 0.000000;
step53.positionY = 0.000000;
step53.positionMode = ePositionRelative;
step53.percentage = 1.000000;
step53.horzSkew = 0.000000;
step53.vertSkew = 0.000000;
step53.rotation = 270.000000;
action.AddStep(step53);

step54 = new CopyLayerSet;
step54.enabled = true;
step54.doDialog = false;
step54.expanded = false;
action.AddStep(step54);

step55 = new LayerVisibility;
step55.enabled = true;
step55.doDialog = false;
step55.expanded = false;
step55.visible = false;
step55.toggleOthers = false;
action.AddStep(step55);

step56 = new SelectBackwardLayer;
step56.enabled = true;
step56.doDialog = false;
step56.expanded = false;
action.AddStep(step56);

step57 = new DuplicateLayer;
step57.enabled = true;
step57.doDialog = false;
step57.expanded = false;
action.AddStep(step57);

step58 = new LayerVisibility;
step58.enabled = true;
step58.doDialog = false;
step58.expanded = false;
step58.visible = true;
step58.toggleOthers = false;
action.AddStep(step58);

step59 = new TransformLayer;
step59.enabled = true;
step59.doDialog = false;
step59.expanded = false;
step59.positionX = 0.000000;
step59.positionY = 0.000000;
step59.positionMode = ePositionRelative;
step59.percentage = 1.000000;
step59.horzSkew = 0.000000;
step59.vertSkew = 0.000000;
step59.rotation = 300.000000;
action.AddStep(step59);

step60 = new CopyLayerSet;
step60.enabled = true;
step60.doDialog = false;
step60.expanded = false;
action.AddStep(step60);

step61 = new LayerVisibility;
step61.enabled = true;
step61.doDialog = false;
step61.expanded = false;
step61.visible = false;
step61.toggleOthers = false;
action.AddStep(step61);

step62 = new SelectBackwardLayer;
step62.enabled = true;
step62.doDialog = false;
step62.expanded = false;
action.AddStep(step62);

step63 = new DuplicateLayer;
step63.enabled = true;
step63.doDialog = false;
step63.expanded = false;
action.AddStep(step63);

step64 = new LayerVisibility;
step64.enabled = true;
step64.doDialog = false;
step64.expanded = false;
step64.visible = true;
step64.toggleOthers = false;
action.AddStep(step64);

step65 = new TransformLayer;
step65.enabled = true;
step65.doDialog = false;
step65.expanded = false;
step65.positionX = 0.000000;
step65.positionY = 0.000000;
step65.positionMode = ePositionRelative;
step65.percentage = 1.000000;
step65.horzSkew = 0.000000;
step65.vertSkew = 0.000000;
step65.rotation = 330.000000;
action.AddStep(step65);

step66 = new GoToNextFrame;
step66.enabled = true;
step66.doDialog = false;
step66.expanded = false;
action.AddStep(step66);


Post Follow-Up to this message ]
Re: Multiple rotations
 

Derek Fountain




quote this post edit post

IP Loged report this post

Old Post  06-01-04 - 04:14 AM  
> Is there no way to use scripting of some sort to do this? I looked for
> ways to use Photoshop's tools from the command line, but couldn't find
> anything.
>
> Something like this would do the job in an incredibly simple fashion:
>
> for(count=1; count<360; count=count+1)
> {
>     open(picname.psd);
>     rotate(count);
>     save(picname + count +, GIF);
>     close(picname.psd);
> }
>
> Is there nothing of the sort available? It seems like an awful waste of
> time to record an action with me rotating a picture 360 times and saving
> it.

It may be sacriliedge in this newsgroup, but sometimes Photoshop isn't the
best tool for image manipulation. <Gasps, then the house falls silent...>
Hey, it's a rare occurence, but it happens!

For scripting jobs, which this clearly is, it's often simpler to use a
scripting language with tools which are designed to be used from script. If
you have Imagemagick on your system (http://www.imagemagick.org/) you can
use its excellent 'mogrify' command to do this from Python:


#!/usr/bin/python

from shutil import copy
from os import system

for deg in range(1,360):
srcfile  = "camp.jpg"
destfile = "camp_%03d.jpg" % deg
copy( srcfile, destfile )
system( "mogrify -rotate %d %s" % (deg, destfile) )


Given a file called camp.jpg (which I happen to have on my system) that does
exactly what you want. Imagemagick and Python (Perl, Tcl, Java, whatever)
run on Win32, Mac9/X and UNIX. This script was tested on Linux, but it'll
probably work unchanged on Win32 or Mac.


Post Follow-Up to this message ]
Re: Multiple rotations
 

jjs




quote this post edit post

IP Loged report this post

Old Post  06-01-04 - 04:14 AM  
In article <40bbd301$0$8120$5a62ac22@freenews.iinet.net.au>, Derek
Fountain <devnull@example.com> wrote:

> It may be sacriliedge in this newsgroup, but sometimes Photoshop isn't the
> best tool for image manipulation. <Gasps, then the house falls silent...>
> Hey, it's a rare occurence, but it happens!

It's not a sacrilege at all. A high-end program invites high-end
expectations from professionals.

> For scripting jobs, which this clearly is [... snip interesting tip...][/color
]

But the job in question need not be scripted. I think that's the point.
The OP was shooting first, asking questions later. He did not understand
what PS can do in the first place and demanded that somehow it read his
(programmer) mind rather than him reading the docs.


Post Follow-Up to this message ]
Re: Multiple rotations
 

Captain Blammo




quote this post edit post

IP Loged report this post

Old Post  06-02-04 - 12:14 AM  
> Regarding the saving of layers, it's been covered here. I only got CS an
> hour before I left work Friday so I can't swear that it does that (but I'd
> bet a beer it does, possibly under an 'export' menu item), and regardless
> you can download a trial of a program that does exactly that via
> drag-n-drop here: http://www.metadma.com/LayerSplitter.html

Sorry, I should have mentioned that I'm using photoshop 7.0, not CS. It
won't even run on win98 :-)

> Sometimes it's okay to drop the compulsion to program and to do with what
> you have when the outcome is adequate. Or read the documentation. RTFM!

If I had the compulsion to program, I would've been using scripting from the
beginning, it's just that the program didn't do what I wanted it to. Trust
me, I R'd T F'ing M, and couldn't find anything helpful at all. After
wasting enough time on a task, one naturally turns to other solutions.

I tried changing values for the action, but all I could find was a series of
rotations that I would have had to change individually, not to mention
adding more of them. There was no "angle" setting. In any case, thank you
for pointing out that such a thing as an action file actually exists,
because they didn't seem to be mentioned in the help file.

I note that the action files for Photoshop can't be read as text, unlike the
Imageready ones. What do I need to view/edit them?

Thanks for the help.

Ewan




Post Follow-Up to this message ]
Re: Multiple rotations
 

Captain Blammo




quote this post edit post

IP Loged report this post

Old Post  06-02-04 - 12:14 AM  
> It may be sacriliedge in this newsgroup, but sometimes Photoshop isn't the
> best tool for image manipulation. <Gasps, then the house falls silent...>
> Hey, it's a rare occurence, but it happens!

I must say that it came as a bit of a suprise to me when I realised it
wasn't the right tool for the job :-)

> For scripting jobs, which this clearly is, it's often simpler to use a
> scripting language with tools which are designed to be used from script.
If
> you have Imagemagick on your system (http://www.imagemagick.org/) you can
> use its excellent 'mogrify' command to do this from Python:
<snip script>

Ah, marvellous! Worked like a charm. I appreciate the script too, as I've
never used either Python or Imagemagick before. Would I be right in thinking
that I could also use mogrify from within shell scripts?

Thanks very much!

Ewan




Post Follow-Up to this message ]
Re: Multiple rotations
 

jjs




quote this post edit post

IP Loged report this post

Old Post  06-02-04 - 04:14 AM  
In article <Lq4vc.51775$Np3.2249653@ursa-nb00s0.nbnet.nb.ca>, "Captain
Blammo" <eas6@nbnet.nb.ca> wrote:
 

> I tried changing values for the action, but all I could find was a series 
of
> rotations that I would have had to change individually, not to mention
> adding more of them. There was no "angle" setting.

Of course there was an "angle:" setting. It's in the 'transform current
layer' part of the action. There are not so many that changing them is a
burden. Sorry if you find that too much trouble to find.


Post Follow-Up to this message ]
Re: Multiple rotations
 

Captain Blammo




quote this post edit post

IP Loged report this post

Old Post  06-02-04 - 04:14 AM  
> > I tried changing values for the action, but all I could find was a
series of 
>
> Of course there was an "angle:" setting. It's in the 'transform current
> layer' part of the action. There are not so many that changing them is a
> burden. Sorry if you find that too much trouble to find.

I consider 360 angle changes, not to mention subsequent changes if I want to
change the increments, to be very much not worth it next to a 7 line script
that can be changed in seconds.

I'm sorry if my laziness offends you, but I was never the kind for
repetitive and unnecessary tasks. I did get the point; I know it could be
done in Imageready, but I don't think the program was too upset about me
using something a bit more streamlined for the purpose.

Ewan




Post Follow-Up to this message ]
Sponsored Links
 





All times are GMT. The time now is 04:10 AM. Post New Thread   
Pages (2): [1] 2 »   Previous Last Thread   Next Thread next
Computer Graphics with Photoshop archive | Show Printable Version | Email this Page | Subscribe to this Thread

Popular forums

Adobe Photoshop forum Macromedia Flash Web Site Design
Dreamweaver FrontPage forum
JavaScript Forum XML forum
Style Sheets VRML
Forum Jump:
Rate This Thread:

 

XML RSS Feed web design latest articles Syndicate our forum via XML or simple JavaScript

Web Design archive  Database administration help  


Top Home  -  Register  -  Control Panel   -  Memberlist  -  Calendar  -  Faq  -  Search Top