Confirmed users
1,396
edits
| Line 112: | Line 112: | ||
==windows== | ==windows== | ||
Each API has set of classes that implement certain interfaces. ISimpleDOM interfaces implementation classes are prefixed by 'isd'. IAccessible interface implementation class is prefixed by 'msaa'. IAccessble2 interface implementation classes are prefixed by 'ia2'. | |||
IAccessible interface implementation. | |||
=== | Each internal class that its windows object should implement specific set of interfaces is wrapped. | ||
<pre> | |||
class NativeAccessible | |||
{ | |||
protected: | |||
DOMNodeAccessible* mGeckoAcc; | |||
}; | |||
class sdnAccessible: public NativeAccessible, | |||
public ISimpleDOMNode | |||
{ | |||
public: | |||
// ISimpleDOMNode | |||
}; | |||
hresult | |||
sdnAccessible::sdnMethod() | |||
{ | |||
AccessNode* geckoAcc = mGeckoObj; | |||
} | |||
class msaaAccessible : public NativeAccessible, | |||
public IAccessible | |||
{ | |||
public: | |||
// IAccessible | |||
}; | |||
hresult | |||
ia2TableAccessible::IATableMethod() | |||
{ | |||
Accessible* geckoAcc = mGeckoObj->AsAccessible(); | |||
geckoAcc->TableMethod(); | |||
return S_OK; | |||
} | |||
class ia2TableAccessible : public IAccessibleTable | |||
{ | |||
public: | |||
// IAccessibleTable | |||
inline TableAccessible* TableAccessible() | |||
{ | |||
return mGeckoObj->AsTable(); | |||
} | |||
}; | |||
hresult | |||
ia2TableAccessible::IATableMethod() | |||
{ | |||
TableAccessible* geckoAcc = mGeckoObj->AsTable(); | |||
geckoAcc->TableMethod(); | |||
return S_OK; | |||
} | |||
class nativeAccessible : public sdnAccessible | |||
{ | |||
}; | |||
class nativeAccessible : public sdnAccessible, | |||
public msaaAccessible | |||
{ | |||
}; | |||
class nativeTableAccessible : public nativeAccessible, | |||
public ia2TableAccessible | |||
{ | |||
}; | |||
class AccessibleWrap: public Accessible | |||
{ | |||
public: | |||
inline NativeAccessible* NativeObject() | |||
{ | |||
if (!mNativeObj || !IsDefunct()) | |||
mNativeObj = CreateNativeAccessible(); | |||
return mNativeObj; | |||
} | |||
protected: | |||
virtual NativeAccessible* CreateNativeAccessible() | |||
{ | |||
return new NativeAccessible(this); | |||
} | |||
}; | |||
class HTMLTableAccessibleWrap : public HTMLTableAccessible; | |||
{ | |||
public: | |||
virtual NativeAccessible* CreateNativeAccessible() | |||
{ | |||
return new NativeTableAccessible(this); | |||
} | |||
}; | |||
</pre> | |||
==mac== | ==mac== | ||