18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2009 Apple Inc. All Rights Reserved.
30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Brent Fulgham
40617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen * Copyright (C) 2007-2009 Torch Mobile, Inc. All Rights Reserved.
50617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "BitmapInfo.h"
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
320617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include <wtf/Assertions.h>
330617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochnamespace WebCore {
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
36e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockBitmapInfo bitmapInfoForSize(int width, int height, BitmapInfo::BitCount bitCount)
370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    BitmapInfo bitmapInfo;
390617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    bitmapInfo.bmiHeader.biWidth         = width;
400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bitmapInfo.bmiHeader.biHeight        = height;
410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bitmapInfo.bmiHeader.biPlanes        = 1;
420617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    bitmapInfo.bmiHeader.biBitCount      = bitCount;
430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bitmapInfo.bmiHeader.biCompression   = BI_RGB;
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    return bitmapInfo;
460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochBitmapInfo::BitmapInfo()
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    memset(&bmiHeader, 0, sizeof(bmiHeader));
510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
54e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockBitmapInfo BitmapInfo::create(const IntSize& size, BitCount bitCount)
55635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{
560617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    return bitmapInfoForSize(size.width(), size.height(), bitCount);
570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
58635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
59e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockBitmapInfo BitmapInfo::createBottomUp(const IntSize& size, BitCount bitCount)
600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
610617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    return bitmapInfoForSize(size.width(), -size.height(), bitCount);
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
63635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
64635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} // namespace WebCore
65