EMMA Coverage Report (generated Fri Aug 23 16:39:17 PDT 2013)
[all classes][org.chromium.content.browser]

COVERAGE SUMMARY FOR SOURCE FILE [RenderCoordinates.java]

nameclass, %method, %block, %line, %
RenderCoordinates.java67%  (2/3)67%  (36/54)71%  (241/339)73%  (52/71)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class RenderCoordinates100% (1/1)65%  (28/43)67%  (163/242)73%  (41/56)
fromPixToDip (float): float 0%   (0/1)0%   (0/5)0%   (0/1)
getContentHeightPix (): float 0%   (0/1)0%   (0/5)0%   (0/1)
getContentHeightPixInt (): int 0%   (0/1)0%   (0/6)0%   (0/1)
getContentWidthPix (): float 0%   (0/1)0%   (0/5)0%   (0/1)
getContentWidthPixInt (): int 0%   (0/1)0%   (0/6)0%   (0/1)
getLastFrameViewportHeightCss (): float 0%   (0/1)0%   (0/3)0%   (0/1)
getLastFrameViewportHeightPix (): float 0%   (0/1)0%   (0/5)0%   (0/1)
getLastFrameViewportHeightPixInt (): int 0%   (0/1)0%   (0/6)0%   (0/1)
getLastFrameViewportWidthCss (): float 0%   (0/1)0%   (0/3)0%   (0/1)
getLastFrameViewportWidthPix (): float 0%   (0/1)0%   (0/5)0%   (0/1)
getLastFrameViewportWidthPixInt (): int 0%   (0/1)0%   (0/6)0%   (0/1)
getMaxHorizontalScrollPix (): float 0%   (0/1)0%   (0/6)0%   (0/1)
getMaxHorizontalScrollPixInt (): int 0%   (0/1)0%   (0/6)0%   (0/1)
getMaxVerticalScrollPix (): float 0%   (0/1)0%   (0/6)0%   (0/1)
getMaxVerticalScrollPixInt (): int 0%   (0/1)0%   (0/6)0%   (0/1)
RenderCoordinates (): void 100% (1/1)100% (12/12)100% (5/5)
access$000 (RenderCoordinates): float 100% (1/1)100% (3/3)100% (1/1)
access$100 (RenderCoordinates): float 100% (1/1)100% (3/3)100% (1/1)
access$200 (RenderCoordinates): float 100% (1/1)100% (3/3)100% (1/1)
access$300 (RenderCoordinates): float 100% (1/1)100% (3/3)100% (1/1)
access$400 (RenderCoordinates): float 100% (1/1)100% (3/3)100% (1/1)
createNormalizedPoint (): RenderCoordinates$NormalizedPoint 100% (1/1)100% (6/6)100% (1/1)
fromDipToPix (float): float 100% (1/1)100% (5/5)100% (1/1)
fromLocalCssToPix (float): float 100% (1/1)100% (8/8)100% (1/1)
fromPixToLocalCss (float): float 100% (1/1)100% (8/8)100% (1/1)
getContentHeightCss (): float 100% (1/1)100% (3/3)100% (1/1)
getContentOffsetYPix (): float 100% (1/1)100% (3/3)100% (1/1)
getContentWidthCss (): float 100% (1/1)100% (3/3)100% (1/1)
getDeviceScaleFactor (): float 100% (1/1)100% (3/3)100% (1/1)
getMaxPageScaleFactor (): float 100% (1/1)100% (3/3)100% (1/1)
getMinPageScaleFactor (): float 100% (1/1)100% (3/3)100% (1/1)
getPageScaleFactor (): float 100% (1/1)100% (3/3)100% (1/1)
getScrollX (): float 100% (1/1)100% (3/3)100% (1/1)
getScrollXPix (): float 100% (1/1)100% (5/5)100% (1/1)
getScrollXPixInt (): int 100% (1/1)100% (6/6)100% (1/1)
getScrollY (): float 100% (1/1)100% (3/3)100% (1/1)
getScrollYPix (): float 100% (1/1)100% (5/5)100% (1/1)
getScrollYPixInt (): int 100% (1/1)100% (6/6)100% (1/1)
hasFixedPageScale (): boolean 100% (1/1)100% (10/10)100% (1/1)
reset (): void 100% (1/1)100% (10/10)100% (3/3)
setDeviceScaleFactor (float): void 100% (1/1)100% (4/4)100% (2/2)
updateContentSizeCss (float, float): void 100% (1/1)100% (7/7)100% (3/3)
updateFrameInfo (float, float, float, float, float, float, float, float, floa... 100% (1/1)100% (29/29)100% (10/10)
     
class RenderCoordinates$10%   (0/1)100% (0/0)100% (0/0)100% (0/0)
     
class RenderCoordinates$NormalizedPoint100% (1/1)73%  (8/11)80%  (78/97)75%  (12/16)
getXAbsoluteCss (): float 0%   (0/1)0%   (0/3)0%   (0/1)
getYAbsoluteCss (): float 0%   (0/1)0%   (0/3)0%   (0/1)
setScreen (float, float): void 0%   (0/1)0%   (0/13)0%   (0/2)
RenderCoordinates$NormalizedPoint (RenderCoordinates): void 100% (1/1)100% (6/6)100% (2/2)
RenderCoordinates$NormalizedPoint (RenderCoordinates, RenderCoordinates$1): void 100% (1/1)100% (4/4)100% (1/1)
getXLocalDip (): float 100% (1/1)100% (11/11)100% (1/1)
getXPix (): float 100% (1/1)100% (7/7)100% (1/1)
getYLocalDip (): float 100% (1/1)100% (11/11)100% (1/1)
getYPix (): float 100% (1/1)100% (11/11)100% (1/1)
setAbsoluteCss (float, float): void 100% (1/1)100% (7/7)100% (3/3)
setLocalDip (float, float): void 100% (1/1)100% (21/21)100% (2/2)

1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4 
5package org.chromium.content.browser;
6 
7/**
8 * Cached copy of all positions and scales (CSS-to-DIP-to-physical pixels)
9 * reported from the renderer.
10 * Provides wrappers and a utility class to help with coordinate transforms on the client side.
11 * Provides the internally-visible set of update methods (called from ContentViewCore).
12 *
13 * Unless stated otherwise, all coordinates are in CSS (document) coordinate space.
14 */
15public class RenderCoordinates {
16    // Scroll offset from the native in CSS.
17    private float mScrollXCss;
18    private float mScrollYCss;
19 
20    // Content size from native in CSS.
21    private float mContentWidthCss;
22    private float mContentHeightCss;
23 
24    // Last-frame render-reported viewport size in CSS.
25    private float mLastFrameViewportWidthCss;
26    private float mLastFrameViewportHeightCss;
27 
28    // Cached page scale factor from native.
29    private float mPageScaleFactor = 1.0f;
30    private float mMinPageScaleFactor = 1.0f;
31    private float mMaxPageScaleFactor = 1.0f;
32 
33    // Cached device density.
34    private float mDeviceScaleFactor;
35 
36    private float mContentOffsetYPix;
37 
38    // Internally-visible set of update methods (used by ContentViewCore).
39    void reset() {
40        mScrollXCss = mScrollYCss = 0;
41        mPageScaleFactor = 1.0f;
42    }
43 
44    void updateContentSizeCss(float contentWidthCss, float contentHeightCss) {
45        mContentWidthCss = contentWidthCss;
46        mContentHeightCss = contentHeightCss;
47    }
48 
49    void setDeviceScaleFactor(float deviceScaleFactor) {
50        mDeviceScaleFactor = deviceScaleFactor;
51    }
52 
53    void updateFrameInfo(
54            float scrollXCss, float scrollYCss,
55            float contentWidthCss, float contentHeightCss,
56            float viewportWidthCss, float viewportHeightCss,
57            float pageScaleFactor, float minPageScaleFactor, float maxPageScaleFactor,
58            float contentOffsetYPix) {
59        mScrollXCss = scrollXCss;
60        mScrollYCss = scrollYCss;
61        mPageScaleFactor = pageScaleFactor;
62        mMinPageScaleFactor = minPageScaleFactor;
63        mMaxPageScaleFactor = maxPageScaleFactor;
64        mContentOffsetYPix = contentOffsetYPix;
65 
66        updateContentSizeCss(contentWidthCss, contentHeightCss);
67        mLastFrameViewportWidthCss = viewportWidthCss;
68        mLastFrameViewportHeightCss = viewportHeightCss;
69    }
70 
71    /**
72     * Handles conversion of a point from window-relative-local-dip or screen-pix
73     * to document-absolute-CSS space and vice versa.
74     */
75    public class NormalizedPoint {
76        private float mXAbsoluteCss, mYAbsoluteCss;
77 
78        private NormalizedPoint() {
79        }
80 
81        /**
82         * @return Absolute CSS (document) X coordinate of the point.
83         */
84        public float getXAbsoluteCss() { return mXAbsoluteCss; }
85 
86        /**
87         * @return Absolute CSS (document) Y coordinate of the point.
88         */
89        public float getYAbsoluteCss() { return mYAbsoluteCss; }
90 
91        /**
92         * @return Local device-scale-unadjusted X coordinate of the point.
93         */
94        public float getXLocalDip() { return (mXAbsoluteCss - mScrollXCss) * mPageScaleFactor; }
95 
96        /**
97         * @return Local device-scale-unadjusted Y coordinate of the point.
98         */
99        public float getYLocalDip() { return (mYAbsoluteCss - mScrollYCss) * mPageScaleFactor; }
100 
101        /**
102         * @return Physical (screen) X coordinate of the point.
103         */
104        public float getXPix() { return getXLocalDip() * mDeviceScaleFactor; }
105 
106        /**
107         * @return Physical (screen) Y coordinate of the point.
108         */
109        public float getYPix() { return getYLocalDip() * mDeviceScaleFactor + mContentOffsetYPix; }
110 
111        /**
112         * Sets the point to the given absolute CSS (document) coordinates.
113         */
114        public void setAbsoluteCss(float xCss, float yCss) {
115            mXAbsoluteCss = xCss;
116            mYAbsoluteCss = yCss;
117        }
118 
119        /**
120         * Sets the point to the given local device-scale-unadjusted coordinates.
121         */
122        public void setLocalDip(float xDip, float yDip) {
123            setAbsoluteCss(
124                    xDip / mPageScaleFactor + mScrollXCss,
125                    yDip / mPageScaleFactor + mScrollYCss);
126        }
127 
128        /**
129         * Sets the point to the given physical (screen) coordinates.
130         */
131        public void setScreen(float xPix, float yPix) {
132            setLocalDip(xPix / mDeviceScaleFactor, yPix / mDeviceScaleFactor);
133        }
134    }
135 
136    /**
137     * @return A helper to convert a point between between absolute CSS and local DIP spaces.
138     */
139    public NormalizedPoint createNormalizedPoint() {
140        return new NormalizedPoint();
141    }
142 
143    /**
144     * @return Horizontal scroll offset in CSS pixels.
145     */
146    public float getScrollX() { return mScrollXCss; }
147 
148    /**
149     * @return Vertical scroll offset in CSS pixels.
150     */
151    public float getScrollY() { return mScrollYCss; }
152 
153    /**
154     * @return Horizontal scroll offset in physical pixels.
155     */
156    public float getScrollXPix() { return fromLocalCssToPix(mScrollXCss); }
157 
158    /**
159     * @return Vertical scroll offset in physical pixels.
160     */
161    public float getScrollYPix() { return fromLocalCssToPix(mScrollYCss); }
162 
163    /**
164     * @return Horizontal scroll offset in physical pixels (approx, integer).
165     */
166    public int getScrollXPixInt() { return (int) Math.floor(getScrollXPix()); }
167 
168    /**
169     * @return Vertical scroll offset in physical pixels (approx, integer).
170     */
171    public int getScrollYPixInt() { return (int) Math.floor(getScrollYPix()); }
172 
173    /**
174     * @return Width of the content in CSS pixels.
175     */
176    public float getContentWidthCss() { return mContentWidthCss; }
177 
178    /**
179     * @return Height of the content in CSS pixels.
180     */
181    public float getContentHeightCss() { return mContentHeightCss; }
182 
183    /**
184     * @return Approximate width of the content in physical pixels.
185     */
186    public float getContentWidthPix() { return fromLocalCssToPix(mContentWidthCss); }
187 
188    /**
189     * @return Approximate height of the content in physical pixels.
190     */
191    public float getContentHeightPix() { return fromLocalCssToPix(mContentHeightCss); }
192 
193    /**
194     * @return Approximate width of the content in physical pixels (integer).
195     */
196    public int getContentWidthPixInt() { return (int) Math.ceil(getContentWidthPix()); }
197 
198    /**
199     * @return Approximate height of the content in physical pixels (integer).
200     */
201    public int getContentHeightPixInt() { return (int) Math.ceil(getContentHeightPix()); }
202 
203    /**
204     * @return Render-reported width of the viewport in CSS pixels.
205     */
206    public float getLastFrameViewportWidthCss() { return mLastFrameViewportWidthCss; }
207 
208    /**
209     * @return Render-reported height of the viewport in CSS pixels.
210     */
211    public float getLastFrameViewportHeightCss() { return mLastFrameViewportHeightCss; }
212 
213    /**
214     * @return Render-reported width of the viewport in physical pixels (approximate).
215     */
216    public float getLastFrameViewportWidthPix() {
217        return fromLocalCssToPix(mLastFrameViewportWidthCss);
218    }
219 
220    /**
221     * @return Render-reported height of the viewport in physical pixels (approximate).
222     */
223    public float getLastFrameViewportHeightPix() {
224        return fromLocalCssToPix(mLastFrameViewportHeightCss);
225    }
226 
227    /**
228     * @return Render-reported width of the viewport in physical pixels (approx, integer).
229     */
230    public int getLastFrameViewportWidthPixInt() {
231        return (int) Math.ceil(getLastFrameViewportWidthPix());
232    }
233 
234    /**
235     * @return Render-reported height of the viewport in physical pixels (approx, integer).
236     */
237    public int getLastFrameViewportHeightPixInt() {
238        return (int) Math.ceil(getLastFrameViewportHeightPix());
239    }
240 
241    /**
242     * @return The Physical on-screen Y offset amount below the top controls.
243     */
244    public float getContentOffsetYPix() {
245        return mContentOffsetYPix;
246    }
247 
248    /**
249     * @return Current page scale factor (maps CSS pixels to DIP pixels).
250     */
251    public float getPageScaleFactor() { return mPageScaleFactor; }
252 
253    /**
254     * @return Minimum page scale factor to be used with the content.
255     */
256    public float getMinPageScaleFactor() { return mMinPageScaleFactor; }
257 
258    /**
259     * @return Maximum page scale factor to be used with the content.
260     */
261    public float getMaxPageScaleFactor() { return mMaxPageScaleFactor; }
262 
263    /**
264     * @return Current device scale factor (maps DIP pixels to physical pixels).
265     */
266    public float getDeviceScaleFactor() { return mDeviceScaleFactor; }
267 
268    /**
269     * @return True if the page doesn't allow zoom-in/zoom-out.
270     */
271    public boolean hasFixedPageScale() { return mMinPageScaleFactor == mMaxPageScaleFactor; }
272 
273    /**
274     * @return Maximum possible horizontal scroll in physical pixels.
275     */
276    public float getMaxHorizontalScrollPix() {
277        return getContentWidthPix() - getLastFrameViewportWidthPix();
278    }
279 
280    /**
281     * @return Maximum possible vertical scroll in physical pixels.
282     */
283    public float getMaxVerticalScrollPix() {
284        return getContentHeightPix() - getLastFrameViewportHeightPix();
285    }
286 
287    /**
288     * @return Maximum possible horizontal scroll in physical pixels (approx, integer).
289     */
290    public int getMaxHorizontalScrollPixInt() {
291        return (int) Math.floor(getMaxHorizontalScrollPix());
292    }
293 
294    /**
295     * @return Maximum possible vertical scroll in physical pixels (approx, integer).
296     */
297    public int getMaxVerticalScrollPixInt() {
298        return (int) Math.floor(getMaxVerticalScrollPix());
299    }
300 
301    /**
302     * @return Physical on-screen coordinate converted to local DIP.
303     */
304    public float fromPixToDip(float pix) {
305        return pix / mDeviceScaleFactor;
306    }
307 
308    /**
309     * @return Local DIP converted to physical coordinates.
310     */
311    public float fromDipToPix(float dip) {
312        return dip * mDeviceScaleFactor;
313    }
314 
315    /**
316     * @return Physical coordinate converted to local CSS.
317     */
318    public float fromPixToLocalCss(float pix) {
319        return pix / (mDeviceScaleFactor * mPageScaleFactor);
320    }
321 
322    /**
323     * @return Local CSS converted to physical coordinates.
324     */
325    public float fromLocalCssToPix(float css) {
326        return css * mPageScaleFactor * mDeviceScaleFactor;
327    }
328}

[all classes][org.chromium.content.browser]
EMMA 2.0.5312 (C) Vladimir Roubtsov