diff options
author | Vincent Sanders <vince@kyllikki.org> | 2016-05-05 22:28:51 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2016-05-15 13:44:34 +0100 |
commit | d21447d096a320a08b3efb2b8768fad0dcdcfd64 (patch) | |
tree | 1a83814b7c9e94b2f13c473261f23dd3a17dee64 /amiga/theme.c | |
parent | 2cbb337756d9af5bda4d594964d446439f602551 (diff) | |
download | netsurf-d21447d096a320a08b3efb2b8768fad0dcdcfd64.tar.gz netsurf-d21447d096a320a08b3efb2b8768fad0dcdcfd64.tar.bz2 |
move frontends into sub directory
Diffstat (limited to 'amiga/theme.c')
-rw-r--r-- | amiga/theme.c | 513 |
1 files changed, 0 insertions, 513 deletions
diff --git a/amiga/theme.c b/amiga/theme.c deleted file mode 100644 index ab32b23dd..000000000 --- a/amiga/theme.c +++ /dev/null @@ -1,513 +0,0 @@ -/* - * Copyright 2010 Chris Young <chris@unsatisfactorysoftware.co.uk> - * - * This file is part of NetSurf, http://www.netsurf-browser.org/ - * - * NetSurf is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * NetSurf is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "amiga/os3support.h" - -#include <stdlib.h> -#include <string.h> - -#include <proto/clicktab.h> -#include <proto/datatypes.h> -#include <proto/dos.h> -#include <proto/exec.h> -#include <proto/graphics.h> -#include <proto/icon.h> -#include <proto/intuition.h> - -#include <gadgets/clicktab.h> -#include <gadgets/space.h> -#ifdef __amigaos4__ -#include <graphics/blitattr.h> -#endif -#include <intuition/pointerclass.h> -#include <workbench/icon.h> - -#include "utils/messages.h" -#include "utils/nsoption.h" -#include "utils/utils.h" -#include "desktop/searchweb.h" -#include "desktop/mouse.h" -#include "desktop/gui_window.h" - -#include "amiga/gui.h" -#include "amiga/drag.h" -#include "amiga/bitmap.h" -#include "amiga/schedule.h" -#include "amiga/theme.h" -#include "amiga/misc.h" - -struct BitMap *throbber = NULL; -struct bitmap *throbber_nsbm = NULL; -int throbber_frames, throbber_update_interval; -static Object *mouseptrobj[AMI_LASTPOINTER+1]; -static struct BitMap *mouseptrbm[AMI_LASTPOINTER+1]; - -const char *ptrs[AMI_LASTPOINTER+1] = { - "ptr_default", - "ptr_point", - "ptr_caret", - "ptr_menu", - "ptr_up", - "ptr_down", - "ptr_left", - "ptr_right", - "ptr_rightup", - "ptr_leftdown", - "ptr_leftup", - "ptr_rightdown", - "ptr_cross", - "ptr_move", - "ptr_wait", - "ptr_help", - "ptr_nodrop", - "ptr_notallowed", - "ptr_progress", - "ptr_blank", - "ptr_drag"}; - -const char *ptrs32[AMI_LASTPOINTER+1] = { - "ptr32_default", - "ptr32_point", - "ptr32_caret", - "ptr32_menu", - "ptr32_up", - "ptr32_down", - "ptr32_left", - "ptr32_right", - "ptr32_rightup", - "ptr32_leftdown", - "ptr32_leftup", - "ptr32_rightdown", - "ptr32_cross", - "ptr32_move", - "ptr32_wait", - "ptr32_help", - "ptr32_nodrop", - "ptr32_notallowed", - "ptr32_progress", - "ptr32_blank", - "ptr32_drag"}; - -#ifdef __amigaos4__ -/* Mapping from NetSurf to AmigaOS mouse pointers */ -int osmouseptr[AMI_LASTPOINTER+1] = { - POINTERTYPE_NORMAL, - POINTERTYPE_LINK, - POINTERTYPE_TEXT, - POINTERTYPE_CONTEXTMENU, - POINTERTYPE_NORTHRESIZE, - POINTERTYPE_SOUTHRESIZE, - POINTERTYPE_WESTRESIZE, - POINTERTYPE_EASTRESIZE, - POINTERTYPE_NORTHEASTRESIZE, - POINTERTYPE_SOUTHWESTRESIZE, - POINTERTYPE_NORTHWESTRESIZE, - POINTERTYPE_SOUTHEASTRESIZE, - POINTERTYPE_CROSS, - POINTERTYPE_HAND, - POINTERTYPE_BUSY, - POINTERTYPE_HELP, - POINTERTYPE_NODROP, - POINTERTYPE_NOTALLOWED, - POINTERTYPE_PROGRESS, - POINTERTYPE_NONE, - POINTERTYPE_DRAGANDDROP}; -#endif - -void ami_theme_init(void) -{ - char themefile[1024]; - BPTR lock = 0; - - strcpy(themefile,nsoption_charp(theme)); - AddPart(themefile,"Theme",100); - - lock = Lock(themefile,ACCESS_READ); - - if(!lock) - { - amiga_warn_user("ThemeApplyErr",nsoption_charp(theme)); - strcpy(themefile,"PROGDIR:Resources/Themes/Default/Theme"); - nsoption_set_charp(theme, (char *)strdup("PROGDIR:Resources/Themes/Default")); - } - else - { - UnLock(lock); - } - - lock = Lock(themefile,ACCESS_READ); - if(lock) - { - UnLock(lock); - messages_add_from_file(themefile); - } -} - -void ami_theme_throbber_setup(void) -{ - char throbberfile[1024]; - struct bitmap *bm; - - ami_get_theme_filename(throbberfile,"theme_throbber",false); - throbber_frames=atoi(messages_get("theme_throbber_frames")); - throbber_update_interval = atoi(messages_get("theme_throbber_delay")); - if(throbber_update_interval == 0) throbber_update_interval = 250; - - bm = ami_bitmap_from_datatype(throbberfile); - throbber = ami_bitmap_get_native(bm, bitmap_get_width(bm), bitmap_get_height(bm), NULL); - - throbber_width = bitmap_get_width(bm) / throbber_frames; - throbber_height = bitmap_get_height(bm); - throbber_nsbm = bm; -} - -void ami_theme_throbber_free(void) -{ - amiga_bitmap_destroy(throbber_nsbm); - throbber_nsbm = NULL; - throbber = NULL; -} - -void ami_get_theme_filename(char *filename, const char *themestring, bool protocol) -{ - if(protocol) - strcpy(filename,"file:///"); - else - strcpy(filename,""); - - if(messages_get(themestring)[0] == '*') - { - strncat(filename,messages_get(themestring)+1,100); - } - else - { - strcat(filename, nsoption_charp(theme)); - AddPart(filename, messages_get(themestring), 100); - } -} - -void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) -{ - ami_set_pointer(g->shared, shape, true); -} - -void ami_set_pointer(struct gui_window_2 *gwin, gui_pointer_shape shape, bool update) -{ - if(gwin->mouse_pointer == shape) return; - ami_update_pointer(gwin->win, shape); - if(update == true) gwin->mouse_pointer = shape; -} - -/* reset the mouse pointer back to what NetSurf last set it as */ -void ami_reset_pointer(struct gui_window_2 *gwin) -{ - ami_update_pointer(gwin->win, gwin->mouse_pointer); -} - -void ami_update_pointer(struct Window *win, gui_pointer_shape shape) -{ - if(drag_save_data) return; - - if(LIB_IS_AT_LEAST((struct Library *)IntuitionBase, 53, 42)) { -#ifdef __amigaos4__ - BOOL ptr_delay = FALSE; - if(shape == GUI_POINTER_WAIT) ptr_delay = TRUE; - - SetWindowPointer(win, - WA_PointerType, osmouseptr[shape], - WA_PointerDelay, ptr_delay, - TAG_DONE); -#endif - } else { - if(nsoption_bool(os_mouse_pointers)) - { - switch(shape) - { - case GUI_POINTER_DEFAULT: - SetWindowPointer(win, TAG_DONE); - break; - - case GUI_POINTER_WAIT: - SetWindowPointer(win, - WA_BusyPointer, TRUE, - WA_PointerDelay, TRUE, - TAG_DONE); - break; - - default: - if(mouseptrobj[shape]) { - SetWindowPointer(win, WA_Pointer, mouseptrobj[shape], TAG_DONE); - } else { - SetWindowPointer(win, TAG_DONE); - } - break; - } - } - else - { - if(mouseptrobj[shape]) - { - SetWindowPointer(win, WA_Pointer, mouseptrobj[shape], TAG_DONE); - } - else - { - if(shape == GUI_POINTER_WAIT) - { - SetWindowPointer(win, - WA_BusyPointer, TRUE, - WA_PointerDelay, TRUE, - TAG_DONE); - } - else - { - SetWindowPointer(win, TAG_DONE); - } - } - } - } -} - -void ami_init_mouse_pointers(void) -{ - if(LIB_IS_AT_LEAST((struct Library *)IntuitionBase, 53, 42)) return; - - int i; - struct RastPort mouseptr; - struct DiskObject *dobj; - uint32 format = IDFMT_BITMAPPED; - int32 mousexpt=0,mouseypt=0; - - InitRastPort(&mouseptr); - - for(i=0; i<=AMI_LASTPOINTER; i++) { - BPTR ptrfile; - mouseptrbm[i] = NULL; - mouseptrobj[i] = NULL; - char ptrfname[1024]; - -#ifdef __amigaos4__ - if(nsoption_bool(truecolour_mouse_pointers)) { - ami_get_theme_filename((char *)&ptrfname,ptrs32[i], false); - if((dobj = GetIconTags(ptrfname,ICONGETA_UseFriendBitMap,TRUE,TAG_DONE))) { - if(IconControl(dobj, ICONCTRLA_GetImageDataFormat, &format, TAG_DONE)) { - if(IDFMT_DIRECTMAPPED == format) { - int32 width = 0, height = 0; - uint8* data = 0; - IconControl(dobj, - ICONCTRLA_GetWidth, &width, - ICONCTRLA_GetHeight, &height, - ICONCTRLA_GetImageData1, &data, - TAG_DONE); - - if ((width > 0) && (width <= 64) && (height > 0) && (height <= 64) && data) { - STRPTR tooltype; - - if((tooltype = FindToolType(dobj->do_ToolTypes, "XOFFSET"))) - mousexpt = atoi(tooltype); - - if((tooltype = FindToolType(dobj->do_ToolTypes, "YOFFSET"))) - mouseypt = atoi(tooltype); - - if ((mousexpt < 0) || (mousexpt >= width)) - mousexpt = 0; - if ((mouseypt < 0) || (mouseypt >= height)) - mouseypt = 0; - - static uint8 dummyPlane[64 * 64 / 8]; - static struct BitMap dummyBitMap = { 64 / 8, 64, 0, 2, 0, { dummyPlane, dummyPlane, 0, 0, 0, 0, 0, 0 }, }; - - mouseptrobj[i] = NewObject(NULL, "pointerclass", - POINTERA_BitMap, &dummyBitMap, - POINTERA_XOffset, -mousexpt, - POINTERA_YOffset, -mouseypt, - POINTERA_WordWidth, (width + 15) / 16, - POINTERA_XResolution, POINTERXRESN_SCREENRES, - POINTERA_YResolution, POINTERYRESN_SCREENRESASPECT, - POINTERA_ImageData, data, - POINTERA_Width, width, - POINTERA_Height, height, - TAG_DONE); - } - } - } - } - } -#endif - - if(!mouseptrobj[i]) - { - ami_get_theme_filename(ptrfname,ptrs[i], false); - if((ptrfile = Open(ptrfname,MODE_OLDFILE))) - { - int mx,my; - UBYTE *pprefsbuf = AllocVecTagList(1061, NULL); - Read(ptrfile,pprefsbuf,1061); - - mouseptrbm[i]=AllocVecTagList(sizeof(struct BitMap), NULL); - InitBitMap(mouseptrbm[i],2,32,32); - mouseptrbm[i]->Planes[0] = AllocRaster(32,32); - mouseptrbm[i]->Planes[1] = AllocRaster(32,32); - mouseptr.BitMap = mouseptrbm[i]; - - for(my=0;my<32;my++) - { - for(mx=0;mx<32;mx++) - { - SetAPen(&mouseptr,pprefsbuf[(my*(33))+mx]-'0'); - WritePixel(&mouseptr,mx,my); - } - } - - mousexpt = ((pprefsbuf[1056]-'0')*10)+(pprefsbuf[1057]-'0'); - mouseypt = ((pprefsbuf[1059]-'0')*10)+(pprefsbuf[1060]-'0'); - - mouseptrobj[i] = NewObject(NULL,"pointerclass", - POINTERA_BitMap,mouseptrbm[i], - POINTERA_WordWidth,2, - POINTERA_XOffset,-mousexpt, - POINTERA_YOffset,-mouseypt, - POINTERA_XResolution,POINTERXRESN_SCREENRES, - POINTERA_YResolution,POINTERYRESN_SCREENRESASPECT, - TAG_DONE); - - FreeVec(pprefsbuf); - Close(ptrfile); - } - - } - - } // for -} - -void ami_mouse_pointers_free(void) -{ - if(LIB_IS_AT_LEAST((struct Library *)IntuitionBase, 53, 42)) return; - - int i; - - for(i=0;i<=AMI_LASTPOINTER;i++) - { - if(mouseptrbm[i]) - { - FreeRaster(mouseptrbm[i]->Planes[0],32,32); - FreeRaster(mouseptrbm[i]->Planes[1],32,32); - FreeVec(mouseptrbm[i]); - } - } -} - -void gui_window_start_throbber(struct gui_window *g) -{ - if(!g) return; - if(nsoption_bool(kiosk_mode)) return; - -#ifdef __amigaos4__ - if(g->tab_node && (g->shared->tabs > 1)) - { - SetClickTabNodeAttrs(g->tab_node, TNA_Flagged, TRUE, TAG_DONE); - RefreshGadgets((APTR)g->shared->objects[GID_TABS], - g->shared->win, NULL); - } -#endif - - g->throbbing = true; - if(g->shared->throbber_frame == 0) g->shared->throbber_frame = 1; - ami_throbber_redraw_schedule(throbber_update_interval, g); -} - -void gui_window_stop_throbber(struct gui_window *g) -{ - struct IBox *bbox; - - if(!g) return; - if(nsoption_bool(kiosk_mode)) return; - -#ifdef __amigaos4__ - if(g->tab_node && (g->shared->tabs > 1)) - { - SetClickTabNodeAttrs(g->tab_node, TNA_Flagged, FALSE, TAG_DONE); - RefreshGadgets((APTR)g->shared->objects[GID_TABS], - g->shared->win, NULL); - } -#endif - - if(g == g->shared->gw) { - if(ami_gui_get_space_box(g->shared->objects[GID_THROBBER], &bbox) != NSERROR_OK) { - amiga_warn_user("NoMemory", ""); - return; - } - - BltBitMapRastPort(throbber, 0, 0, g->shared->win->RPort, bbox->Left, - bbox->Top, throbber_width, throbber_height, 0x0C0); - - ami_gui_free_space_box(bbox); - } - - g->throbbing = false; - ami_throbber_redraw_schedule(-1, g); -} - -static void ami_throbber_update(void *p) -{ - struct gui_window *g = (struct gui_window *)p; - struct IBox *bbox; - int frame = 0; - - if(!g) return; - if(!g->shared->objects[GID_THROBBER]) return; - - if(g->throbbing == true) { - frame = g->shared->throbber_frame; - g->shared->throbber_frame++; - if(g->shared->throbber_frame > (throbber_frames-1)) - g->shared->throbber_frame=1; - } - - if(g->shared->gw == g) { - if(ami_gui_get_space_box(g->shared->objects[GID_THROBBER], &bbox) != NSERROR_OK) { - amiga_warn_user("NoMemory", ""); - return; - } -#ifdef __amigaos4__ - BltBitMapTags(BLITA_SrcX, throbber_width * frame, - BLITA_SrcY, 0, - BLITA_DestX, bbox->Left, - BLITA_DestY, bbox->Top, - BLITA_Width, throbber_width, - BLITA_Height, throbber_height, - BLITA_Source, throbber, - BLITA_Dest, g->shared->win->RPort, - BLITA_SrcType, BLITT_BITMAP, - BLITA_DestType, BLITT_RASTPORT, - // BLITA_UseSrcAlpha, TRUE, - TAG_DONE); -#else - BltBitMapRastPort(throbber, throbber_width * frame, 0, g->shared->win->RPort, - bbox->Left, bbox->Top, throbber_width, throbber_height, 0xC0); -#endif - ami_gui_free_space_box(bbox); - } - - if(frame > 0) ami_throbber_redraw_schedule(throbber_update_interval, g); -} - -void ami_throbber_redraw_schedule(int t, struct gui_window *g) -{ - ami_schedule(t, ami_throbber_update, g); -} - |