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