View Javadoc

1   // ========================================================================
2   // $Id: Image.java,v 1.8 2005/08/13 00:01:23 gregwilkins Exp $
3   // Copyright 1996-2004 Mort Bay Consulting Pty. Ltd.
4   // ------------------------------------------------------------------------
5   // Licensed under the Apache License, Version 2.0 (the "License");
6   // you may not use this file except in compliance with the License.
7   // You may obtain a copy of the License at 
8   // http://www.apache.org/licenses/LICENSE-2.0
9   // Unless required by applicable law or agreed to in writing, software
10  // distributed under the License is distributed on an "AS IS" BASIS,
11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  // See the License for the specific language governing permissions and
13  // limitations under the License.
14  // ========================================================================
15  
16  package org.mortbay.html;
17  import java.io.File;
18  import java.io.FileInputStream;
19  import java.io.IOException;
20  
21  import org.mortbay.log.Log;
22  import org.mortbay.util.IO;
23  
24  
25  /* ---------------------------------------------------------------- */
26  /** HTML Image Tag.
27   * @see org.mortbay.html.Block
28   * @version $Id: Image.java,v 1.8 2005/08/13 00:01:23 gregwilkins Exp $
29   * @author Greg Wilkins
30  */
31  public class Image extends Tag
32  {
33  
34      /* ------------------------------------------------------------ */
35      public Image(String src)
36      {
37          super("img");
38          attribute("src",src);
39      }
40      
41      /* ------------------------------------------------------------ */
42      /** Construct from GIF file.
43       */
44      public Image(String dirname, String src)
45      {
46          super("img");
47          attribute("src",src);
48          setSizeFromGif(dirname,src);
49      }
50      
51      /* ------------------------------------------------------------ */
52      /** Construct from GIF file.
53       */
54      public Image(File gif)
55      {
56          super("img");
57          attribute("src",gif.getName());
58          setSizeFromGif(gif);
59      }
60  
61      /* ------------------------------------------------------------ */
62      public Image(String src,int width, int height, int border)
63      {
64          this(src);
65          width(width);
66          height(height);
67          border(border);
68      }
69      
70      /* ------------------------------------------------------------ */
71      public Image border(int b)
72      {
73          attribute("border",b);
74          return this;
75      }
76      
77      /* ------------------------------------------------------------ */
78      public Image alt(String alt)
79      {
80          attribute("alt",alt);
81          return this;
82      }
83      
84      /* ------------------------------------------------------------ */
85      /** Set the image size from the header of a GIF file.
86       * @param dirname The directory name, expected to be in OS format
87       * @param pathname The image path name relative to the directory.
88       *                 Expected to be in WWW format (i.e. with slashes)
89       *                 and will be converted to OS format.
90       */
91      public Image setSizeFromGif(String dirname,
92                                  String pathname)
93      {
94          String filename =dirname + pathname.replace('/',File.separatorChar);
95          return setSizeFromGif(filename);
96      }
97      
98      /* ------------------------------------------------------------ */
99      /** Set the image size from the header of a GIF file.
100      */
101     public Image setSizeFromGif(String filename)
102     {
103         return setSizeFromGif(new File(filename));
104     }
105     
106     /* ------------------------------------------------------------ */
107     /** Set the image size from the header of a GIF file.
108      */
109     public Image setSizeFromGif(File gif)
110     {
111         if (gif.canRead())
112         {
113             FileInputStream in = null;
114             try{
115                 byte [] buf = new byte[10];
116                 in = new FileInputStream(gif);
117                 if (in.read(buf,0,10)==10)
118                 {
119                     if(Log.isDebugEnabled())Log.debug("Image "+gif.getName()+
120                                " is " +
121                                ((0x00ff&buf[7])*256+(0x00ff&buf[6])) +
122                                " x " +
123                                (((0x00ff&buf[9])*256+(0x00ff&buf[8]))));
124                     width((0x00ff&buf[7])*256+(0x00ff&buf[6]));
125                     height(((0x00ff&buf[9])*256+(0x00ff&buf[8])));
126                 }
127             }
128             catch (IOException e){
129                 Log.ignore(e);
130             }
131             finally {
132                 IO.close(in);
133             }
134         }
135         
136         return this;
137     }
138     
139 }
140 
141 
142