• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2006, The Android Open Source Project
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *  * Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  *  * Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #ifndef RenderSkinAndroid_h
27 #define RenderSkinAndroid_h
28 
29 namespace android {
30     class AssetManager;
31 }
32 
33 class SkBitmap;
34 
35 namespace WebCore {
36 class Node;
37 class PlatformGraphicsContext;
38 
39 /*  RenderSkinAndroid is the base class for all RenderSkins.  Form elements each have a
40  *  subclass for drawing themselves.
41  */
42 class RenderSkinAndroid
43 {
44 public:
45     RenderSkinAndroid();
~RenderSkinAndroid()46     virtual ~RenderSkinAndroid() {}
47 
48     enum State {
49         kDisabled,
50         kNormal,
51         kFocused,
52         kPressed,
53 
54         kNumStates
55     };
56 
57     /**
58      * Initialize the Android skinning system. The AssetManager may be used to find resources used
59      * in rendering.
60      */
61     static void Init(android::AssetManager*);
62 
63     /* DecodeBitmap determines which file to use, with the given fileName of the form
64      * "images/bitmap.png", and uses the asset manager to select the exact one.  It
65      * returns true if it successfully decoded the bitmap, false otherwise.
66      */
67     static bool DecodeBitmap(android::AssetManager* am, const char* fileName, SkBitmap* bitmap);
68 
69     /*  draw() tells the skin to draw itself, and returns true if the skin needs
70      *  a redraw to animations, false otherwise
71      */
draw(PlatformGraphicsContext *)72     virtual bool draw(PlatformGraphicsContext*) { return false; }
73 
74     /*  notifyState() checks to see if the element is checked, focused, and enabled
75      *  it must be implemented in the subclass
76      */
notifyState(Node * element)77     virtual void notifyState(Node* element) { }
78 
79     /*  setDim() tells the skin its width and height
80      */
setDim(int width,int height)81     virtual void setDim(int width, int height) { m_width = width; m_height = height; }
82 
83 protected:
84     int                     m_height;
85     int                     m_width;
86 
87 };
88 
89 } // WebCore
90 
91 #endif
92 
93