Etk-Perl
view release on metacpan or search on metacpan
xs/EtkTypes.c view on Meta::CPAN
SV * previous;
SV * result;
if (!object)
return newSVsv(&PL_sv_undef);
HV * h = newHV();
hv_store(h, "ETK", 3, newSViv((long)object), 0);
result = newRV((SV*)h);
sv_bless(result, gv_stashpv(classname, FALSE));
SvREFCNT_dec(h);
#ifdef DEBUG
printf("\t>> Object (%p)\n", result);
#endif
return result;
}
char * getClass(char *type) {
SV ** sv;
sv = hv_fetch(NameTranslator, type, strlen(type), 0);
if (!sv) return "Etk::Bug";
return SvPV_nolen(*sv);
}
void __etk_perl_init() {
NameTranslator = newHV();
#define __(A, B)\
hv_store(NameTranslator, A, strlen(A), newSVpv(B, strlen(B)), 0)
__("Etk_Alignment", "Etk::Alignment");
__("Etk_Bin", "Etk::Bin");
__("Etk_Box", "Etk::Box");
__("Etk_HBox", "Etk::HBox");
__("Etk_VBox", "Etk::VBox");
__("Etk_Button", "Etk::Button");
__("Etk_Canvas", "Etk::Canvas");
__("Etk_Check_Button", "Etk::CheckButton");
__("Etk_Colorpicker", "Etk::Colorpicker");
__("Etk_Combobox", "Etk::Combobox");
__("Etk_Combobox_Item", "Etk::Combobox::Item");
__("Etk_Container", "Etk::Container");
__("Etk_Dialog", "Etk::Dialog");
__("Etk_Drag", "Etk::Drag");
__("Etk_Embed", "Etk::Embed");
__("Etk_Entry", "Etk::Entry");
__("Etk_Filechooser_Widget", "Etk::Filechooser");
__("Etk_Frame", "Etk::Frame");
__("Etk_Fixed", "Etk::Fixed");
__("Etk_Iconbox", "Etk::Iconbox");
__("Etk_Iconbox_Model", "Etk::Iconbox::Model");
__("Etk_Iconbox_Icon", "Etk::Iconbox::Icon");
__("Etk_Iconbox_Grid", "Etk::Iconbox::Grid");
__("Etk_Image", "Etk::Image");
__("Etk_Label", "Etk::Label");
__("Etk_Mdi_Window", "Etk::Mdi::Window");
__("Etk_Mdi_Area", "Etk::Mdi::Area");
__("Etk_Menu", "Etk::Menu");
__("Etk_Menu_Bar", "Etk::Menu::Bar");
__("Etk_Menu_Item", "Etk::Menu::Item");
__("Etk_Menu_Item_Separator", "Etk::Menu::Item::Separator");
__("Etk_Menu_Item_Image", "Etk::Menu::Item::Image");
__("Etk_Menu_Item_Check", "Etk::Menu::Item::Check");
__("Etk_Menu_Item_Radio", "Etk::Menu::Item::Radio");
__("Etk_Menu_Shell", "Etk::Menu::Shell");
__("Etk_Message_Dialog", "Etk::MessageDialog");
__("Etk_Notebook", "Etk::Notebook");
__("Etk_Object", "Etk::Object");
__("Etk_Paned", "Etk::Paned");
__("Etk_HPaned", "Etk::HPaned");
__("Etk_VPaned", "Etk::VPaned");
__("Etk_Popup_Window", "Etk::PopupWindow");
__("Etk_Progress_Bar", "Etk::ProgressBar");
__("Etk_Radio_Button", "Etk::RadioButton");
__("Etk_Range", "Etk::Range");
__("Etk_Scrollbar", "Etk::Scrollbar");
__("Etk_HScrollbar", "Etk::HScrollbar");
__("Etk_VScrollbar", "Etk::VScrollbar");
__("Etk_Scrolled_View", "Etk::ScrolledView");
__("Etk_Separator", "Etk::Separator");
__("Etk_HSeparator", "Etk::HSeparator");
__("Etk_VSeparator", "Etk::VSeparator");
__("Etk_Slider", "Etk::Slider");
__("Etk_HSlider", "Etk::HSlider");
__("Etk_VSlider", "Etk::VSlider");
__("Etk_Statusbar", "Etk::StatusBar");
__("Etk_String", "Etk::String");
__("Etk_Spinner", "Etk::Spinner");
__("Etk_Shadow", "Etk::Shadow");
__("Etk_Table", "Etk::Table");
__("Etk_Text_View", "Etk::TextView");
__("Etk_Textblock", "Etk::TextBlock");
__("Etk_Textblock_Iter", "Etk::TextBlock::Iter");
__("Etk_Toggle_Button", "Etk::ToggleButton");
__("Etk_Tool_Button", "Etk::ToolButton");
__("Etk_Tool_Toggle_Button", "Etk::ToolToggleButton");
__("Etk_Toolbar", "Etk::Toolbar");
__("Etk_Toplevel", "Etk::Toplevel");
__("Etk_Tree", "Etk::Tree");
__("Etk_Tree_Col", "Etk::Tree::Col");
__("Etk_Tree_Row", "Etk::Tree::Row");
__("Etk_Tree_Model", "Etk::Tree::Model");
__("Etk_Tree_Grid", "Etk::Tree::Grid");
__("Etk_Viewport", "Etk::Viewport");
__("Etk_Widget", "Etk::Widget");
__("Etk_Window", "Etk::Window");
__("Etk_Box_Cell", "Etk::BoxCell");
__("Etk_Combobox_Entry", "Etk::Combobox::Entry");
__("Etk_Combobox_Entry_Item", "Etk::Combobox::Entry::Item");
__("Etk_Combobox_Entry_Column", "Etk::Combobox::Entry::Column");
__("Ecore_Timer", "Etk::Timer");
__("Evas", "Evas");
__("Evas_Object", "Evas::Object");
#undef __
#define __(A, B)\
av_push(get_av("Etk::"A"::ISA", TRUE), newSVpv("Etk::"B, strlen("Etk::"B)));
__("TextBlock", "Object");
__("TextBlock::Iter", "TextBlock");
__("Tree::Col", "Object");
__("Widget", "Object");
__("BoxCell", "Widget");
__("Colorpicker", "Widget");
__("Combobox", "Widget");
__("Combobox::Item", "Widget");
__("Combobox::Entry", "Widget");
__("Combobox::Entry::Item", "Widget");
__("Container", "Widget");
__("Bin", "Container");
__("Alignment", "Bin");
__("Button", "Bin");
__("ToggleButton", "Button");
__("CheckButton", "ToggleButton");
__("RadioButton", "CheckButton");
__("ToolButton", "Button");
__("ToolToggleButton", "Button");
__("Frame", "Bin");
__("ScrolledView", "Bin");
__("Shadow", "Bin");
__("Toplevel", "Bin");
__("Window", "Toplevel");
__("Dialog", "Window");
__("MessageDialog", "Dialog");
__("PopupWindow", "Window");
__("Drag", "Window");
__("Viewport", "Bin");
__("Mdi::Window", "Bin");
__("Mdi::Area", "Container");
__("Box", "Container");
__("Toolbar", "Box");
__("HBox", "Box");
__("VBox", "Box");
__("Notebook", "Container");
__("Paned", "Container");
__("HPaned", "Paned");
__("VPaned", "Paned");
__("Table", "Container");
__("Fixed", "Container");
__("Entry", "Widget");
__("Filechooser", "Widget");
__("Iconbox", "Widget");
__("Iconbox::Model", "Iconbox");
__("Iconbox::Icon", "Iconbox");
__("Image", "Widget");
__("Label", "Widget");
__("Menu::Shell", "Widget");
__("Menu", "Menu::Shell");
__("Menu::Bar", "Menu::Shell");
__("Menu::Item", "Widget");
__("Menu::Item::Image", "Menu::Item");
__("Menu::Item::Check", "Menu::Item");
__("Menu::Item::Radio", "Menu::Item");
__("Menu::Item::Separator", "Menu::Item");
__("ProgressBar", "Widget");
__("Range", "Widget");
__("Slider", "Range");
__("HSlider", "Slider");
__("VSlider", "Slider");
__("Scrollbar", "Range");
__("HScrollbar", "Scrollbar");
__("VScrollbar", "Scrollbar");
__("Spinner", "Range");
__("Spearator", "Widget");
__("HSeparator", "Spearator");
__("VSeparator", "Spearator");
__("StatusBar", "Widget");
__("TextView", "Widget");
__("Tree", "Widget");
__("Tree::Row", "Tree");
__("Tree::Model", "Tree");
#undef __
}
SV * newSVColor(Etk_Color col) {
HV * hv;
SV * color;
hv = newHV();
color = newSViv(col.r);
hv_store(hv, "r", strlen("r"), color, 0);
color = newSViv(col.g);
hv_store(hv, "g", strlen("g"), color, 0);
color = newSViv(col.b);
hv_store(hv, "b", strlen("b"), color, 0);
color = newSViv(col.a);
hv_store(hv, "a", strlen("a"), color, 0);
return newRV_noinc((SV*)hv);
}
Etk_Color SvColor(SV *color) {
Etk_Color col;
if (SvROK(color) && SvTYPE(SvRV(color)) == SVt_PVHV)
{
HV * hash;
SV ** val;
hash = (HV*)SvRV(color);
val = hv_fetch(hash, "r", strlen("r"), 0);
col.r = val ? SvIV(*val) : 0;
val = hv_fetch(hash, "g", strlen("g"), 0);
col.g = val ? SvIV(*val) : 0;
val = hv_fetch(hash, "b", strlen("b"), 0);
( run in 0.796 second using v1.01-cache-2.11-cpan-39bf76dae61 )