1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "InterfaceInitFuncs.h"
9 #include "AccessibleWrap.h"
10 #include "ImageAccessible.h"
11 #include "mozilla/Likely.h"
13 #include "nsIAccessibleTypes.h"
16 using namespace mozilla
;
17 using namespace mozilla::a11y
;
20 const gchar
* getDescriptionCB(AtkObject
* aAtkObj
);
23 getImagePositionCB(AtkImage
* aImage
, gint
* aAccX
, gint
* aAccY
,
24 AtkCoordType aCoordType
)
26 AccessibleWrap
* accWrap
= GetAccessibleWrap(ATK_OBJECT(aImage
));
27 if (!accWrap
|| !accWrap
->IsImage())
30 ImageAccessible
* image
= accWrap
->AsImage();
31 uint32_t geckoCoordType
= (aCoordType
== ATK_XY_WINDOW
) ?
32 nsIAccessibleCoordinateType::COORDTYPE_WINDOW_RELATIVE
:
33 nsIAccessibleCoordinateType::COORDTYPE_SCREEN_RELATIVE
;
34 // Returned in screen coordinates
35 image
->GetImagePosition(geckoCoordType
, aAccX
, aAccY
);
39 getImageDescriptionCB(AtkImage
* aImage
)
41 return getDescriptionCB(ATK_OBJECT(aImage
));
45 getImageSizeCB(AtkImage
* aImage
, gint
* aAccWidth
, gint
* aAccHeight
)
47 AccessibleWrap
* accWrap
= GetAccessibleWrap(ATK_OBJECT(aImage
));
48 if (!accWrap
|| !accWrap
->IsImage())
51 accWrap
->AsImage()->GetImageSize(aAccWidth
, aAccHeight
);
56 imageInterfaceInitCB(AtkImageIface
* aIface
)
58 NS_ASSERTION(aIface
, "no interface!");
59 if (MOZ_UNLIKELY(!aIface
))
62 aIface
->get_image_position
= getImagePositionCB
;
63 aIface
->get_image_description
= getImageDescriptionCB
;
64 aIface
->get_image_size
= getImageSizeCB
;