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 nsIntPoint pos
= image
->Position(geckoCoordType
);
40 getImageDescriptionCB(AtkImage
* aImage
)
42 return getDescriptionCB(ATK_OBJECT(aImage
));
46 getImageSizeCB(AtkImage
* aImage
, gint
* aAccWidth
, gint
* aAccHeight
)
48 AccessibleWrap
* accWrap
= GetAccessibleWrap(ATK_OBJECT(aImage
));
49 if (!accWrap
|| !accWrap
->IsImage())
52 nsIntSize size
= accWrap
->AsImage()->Size();
53 *aAccWidth
= size
.width
;
54 *aAccHeight
= size
.height
;
60 imageInterfaceInitCB(AtkImageIface
* aIface
)
62 NS_ASSERTION(aIface
, "no interface!");
63 if (MOZ_UNLIKELY(!aIface
))
66 aIface
->get_image_position
= getImagePositionCB
;
67 aIface
->get_image_description
= getImageDescriptionCB
;
68 aIface
->get_image_size
= getImageSizeCB
;