/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

#ifndef __com_sun_star_awt_XToolkitExperimental_idl__
#define __com_sun_star_awt_XToolkitExperimental_idl__

#include <com/sun/star/awt/XToolkit2.idl>

module com {  module sun {  module star {  module awt {

/** Work in progress, don't use unless you know what you are doing.
 */

interface XToolkitExperimental : XToolkit2
{
  /** Create a bitmap device using a byte buffer allocated outside of UNO territory.
   *
   *  @returns the device
   *
   *  @param AddressOfMemoryBufferForSharedArrayWrapper is the address of a
   *  (C++) object the exact type of which is to be determined, but the point
   *  is that it will then be rewrapped into a boost::shared_array of bytes to
   *  be passed to the basebmp code. shared_array has its own style of
   *  reference counting, naturally not related to UNO's or Java's, so lots of
   *  fun stuff to take care of. I won't bother complicating stuff with
   *  XUnoTunnel here (if it would even be possible to use it), this isn't in
   *  any way intended to be "generic" anyway, but is experimental work in
   *  progress, indented just for Android so far, and probably for iOS, too.
   */

  com::sun::star::awt::XDevice createScreenCompatibleDeviceUsingBuffer( [in] long Width,
                                                                        [in] long Height,
                                                                        [in] long ScaleNumerator,
                                                                        [in] long ScaleDenominator,
                                                                        [in] long XOffset,
                                                                        [in] long YOffset,
                                                                        [in] hyper AddressOfMemoryBufferForSharedArrayWrapper );

  /** Process all pending idle events
   */
  void processEventsToIdle();

};

}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
