示例#1
0
int csm_load_prev_shaders(struct allocator* alloc)
{
    char cascadecnt[10];
    enum gfx_hwver hwver = gfx_get_hwver();

    gfx_shader_beginload(alloc, "shaders/fsq.vs", "shaders/csm-prev.ps", NULL, 1,
        "shaders/common.inc");
    if (hwver == GFX_HWVER_D3D10_0 || hwver == GFX_HWVER_GL3_2 || hwver == GFX_HWVER_GL3_3)    {
        g_csm->prev_shader = gfx_shader_add("csm-prev", 2, 2,
            GFX_INPUTELEMENT_ID_POSITION, "vsi_pos", 0,
            GFX_INPUTELEMENT_ID_TEXCOORD0, "vsi_coord", 0,
            "_CASCADE_CNT_", str_itos(cascadecnt, CSM_CASCADE_CNT), "_D3D10_", "1");
    }    else   {
        g_csm->prev_shader = gfx_shader_add("csm-prev", 2, 1,
            GFX_INPUTELEMENT_ID_POSITION, "vsi_pos", 0,
            GFX_INPUTELEMENT_ID_TEXCOORD0, "vsi_coord", 0,
            "_CASCADE_CNT_", str_itos(cascadecnt, CSM_CASCADE_CNT));
    }

    gfx_shader_endload();
    if (g_csm->prev_shader == 0)
        return FALSE;

    return TRUE;
}
示例#2
0
文件: osd.c 项目: hownam/fennec
string get_time_text(int t)
{
	static letter pbuf[64];
	letter tmb[32];

	memset(pbuf, 0, sizeof(pbuf));


	if(t > 3600)
	{
		str_itos(t / 3600, tmb, 10);
		str_cat(pbuf, tmb);
		str_cat(pbuf, uni(":"));
		t %= 3600;
	}

	if(t > 60)
	{
		str_itos(t / 60, tmb, 10);
		if(tmb[1] == uni('\0'))
		{
			tmb[1] = tmb[0];
			tmb[0] = uni('0');
			tmb[2] = uni('\0');
		}
		str_cat(pbuf, tmb);
		str_cat(pbuf, uni(":"));
		t %= 60;
	}else{
		str_cpy(pbuf, uni("00:"));
	}

	str_itos(t, tmb, 10);
	if(tmb[1] == uni('\0'))
	{
		tmb[1] = tmb[0];
		tmb[0] = uni('0');
		tmb[2] = uni('\0');
	}
	str_cat(pbuf, tmb);

	return pbuf;
}
示例#3
0
result_t webserver_init(int port)
{
	char port_str[32];
	str_itos(port_str, port);
    struct mg_server* server = mg_create_server(NULL, webserver_request_handler);
    if (server == NULL) {
        log_printf(LOG_WARNING, "starting httpd server failed - service will not be available.");
        return RET_FAIL;
    }
    mg_set_option(server, "listening_port", port_str);
    g_prf.server = server;

	log_printf(LOG_TEXT, "httpd debug server started on port '%s'", port_str);

	return RET_OK;
}
示例#4
0
result_t csm_console_debugcsm(uint argc, const char** argv, void* param)
{
    int enable = TRUE;
    if (argc == 1)
        enable = str_tobool(argv[0]);
    else if (argc > 1)
        return RET_INVALIDARG;
    g_csm->debug_csm = enable;

    for (int i = 0; i < CSM_CASCADE_CNT; i++)    {
        char num[10];
        char alias[32];
        strcat(strcpy(alias, "CSM"), str_itos(num, i));
        if (enable)
            hud_add_image(alias, g_csm->prev_tex[i], FALSE, CSM_PREV_SIZE, CSM_PREV_SIZE, alias);
        else
            hud_remove_image(alias);
    }

    return RET_OK;
}
示例#5
0
int csm_load_shaders(struct allocator* alloc)
{
    int r;
    char max_instances_str[8];
    char cascade_cnt_str[8];
    char max_bones_str[8];

    /* include all extra stuff in rpath flags (because csm-renderer can render them all) */
    uint extra_rpath = GFX_RPATH_DIFFUSEMAP | GFX_RPATH_NORMALMAP | GFX_RPATH_ALPHAMAP |
        GFX_RPATH_REFLECTIONMAP | GFX_RPATH_EMISSIVEMAP | GFX_RPATH_GLOSSMAP | GFX_RPATH_RAW;

    str_itos(max_instances_str, GFX_INSTANCES_MAX);
    str_itos(cascade_cnt_str, CSM_CASCADE_CNT);
    str_itos(max_bones_str, GFX_SKIN_BONES_MAX);

    /* for normal csm, do not load pixel-shader */
    gfx_shader_beginload(alloc, "shaders/csm.vs", NULL, "shaders/csm.gs", 1, "shaders/skin.inc");
    r = csm_add_shader(gfx_shader_add("csm-raw", 2, 2,
        GFX_INPUTELEMENT_ID_POSITION, "vsi_pos", 0,
        GFX_INPUTELEMENT_ID_NORMAL, "vsi_norm", 0,
        "_MAX_INSTANCES_", max_instances_str,
        "_CASCADE_CNT_", cascade_cnt_str),
        GFX_RPATH_CSMSHADOW | extra_rpath);
    if (!r)
        return FALSE;
    r = csm_add_shader(gfx_shader_add("csm-skin", 4, 4,
        GFX_INPUTELEMENT_ID_POSITION, "vsi_pos", 0,
        GFX_INPUTELEMENT_ID_NORMAL, "vsi_norm", 0,
        GFX_INPUTELEMENT_ID_BLENDINDEX, "vsi_blendidxs", 1,
        GFX_INPUTELEMENT_ID_BLENDWEIGHT, "vsi_blendweights", 1,
        "_MAX_INSTANCES_", max_instances_str,
        "_CASCADE_CNT_", cascade_cnt_str,
        "_SKIN_", "1",
        "_MAX_BONES_", max_bones_str),
        GFX_RPATH_CSMSHADOW | GFX_RPATH_SKINNED | extra_rpath);
    if (!r)
        return FALSE;
    gfx_shader_endload();

    /* for alpha-test shaders, load pixel-shader too */
    gfx_shader_beginload(alloc, "shaders/csm.vs", "shaders/csm.ps", "shaders/csm.gs", 1,
        "shaders/skin.inc");
    r = csm_add_shader(gfx_shader_add("csm-alpha", 3, 3,
        GFX_INPUTELEMENT_ID_POSITION, "vsi_pos", 0,
        GFX_INPUTELEMENT_ID_NORMAL, "vsi_norm",  0,
        GFX_INPUTELEMENT_ID_TEXCOORD0, "vsi_coord", 0,
        "_MAX_INSTANCES_", max_instances_str,
        "_CASCADE_CNT_", cascade_cnt_str,
        "_ALPHAMAP_", "1"),
        GFX_RPATH_CSMSHADOW | GFX_RPATH_ALPHAMAP | extra_rpath);
    if (!r)
        return FALSE;
    r = csm_add_shader(gfx_shader_add("csm-skin-alpha", 5, 5,
        GFX_INPUTELEMENT_ID_POSITION, "vsi_pos", 0,
        GFX_INPUTELEMENT_ID_NORMAL, "vsi_norm", 0,
        GFX_INPUTELEMENT_ID_TEXCOORD0, "vsi_coord", 0,
        GFX_INPUTELEMENT_ID_BLENDINDEX, "vsi_blendidxs", 1,
        GFX_INPUTELEMENT_ID_BLENDWEIGHT, "vsi_blendweights", 1,
        "_MAX_INSTANCES_", max_instances_str,
        "_CASCADE_CNT_", cascade_cnt_str,
        "_ALPHAMAP_", "1",
        "_SKIN_", "1",
        "_MAX_BONES_", max_bones_str),
        GFX_RPATH_CSMSHADOW | GFX_RPATH_SKINNED | GFX_RPATH_ALPHAMAP | extra_rpath);
    if (!r)
        return FALSE;
    gfx_shader_endload();

    return TRUE;
}
示例#6
0
int fileassociation_set(const string ext,    /* extension (w\o leading period) */
                        const string acname, /* action name */
                        const string lacname,/* long action name */
                        const string icpath, /* icon path */
                        const string accmd,  /* action command */
                        const string dsc,    /* type description */
                        int          icidx)  /* icon index */
{

    letter        apext [256];
    letter        apcls [256];
    letter        kval  [256];
    letter        icdat [256];
    letter        tmpbuf[128];
    HKEY          rkey, extkey, clskey, tmpkey, tmpkey2, tmpkey3;
    long          vsize;
    const string  cls_name = uni("fennec.player.file.");
    const string  bkp_name = uni("fennec.player.backup");

    if(!ext)return 0;
    if(!acname)return 0;
    if(!str_len(ext))return 0;
    if(!str_len(acname))return 0;

    if(icidx == -1)icidx = get_default_file_icon(ext);

    apext[0] = uni('.');
    str_cpy(apext + 1, ext);

    /* create class name */

    str_cpy(apcls, cls_name);
    str_cat(apcls, ext); /* i.e. "fennec.player.file.ogg" */

    /* try opening keys */

    if(RegOpenKey(HKEY_CLASSES_ROOT, 0, &rkey) != ERROR_SUCCESS)return 0;


    RegCreateKey(rkey, apext, &extkey);

    /* get current value */

    memset(kval, 0, sizeof(kval));
    vsize = sizeof(kval);
    RegQueryValue(extkey, 0 /* (default) */, kval, &vsize);

    if(str_icmp(apcls, kval))
    {
        /* create a backup */
        RegSetValueEx(extkey, bkp_name, 0, REG_SZ, (CONST BYTE*)kval, (unsigned long)str_size(kval));
    }

    RegSetValue(extkey, 0, REG_SZ, apcls, (unsigned long)str_size(apcls));

    RegCloseKey(extkey);

    /* create the class */

    if(RegCreateKey(rkey, apcls, &clskey) != ERROR_SUCCESS)
    {
        RegCloseKey(rkey);
        return 0;
    }

    RegSetValue(clskey, 0, REG_SZ, dsc, (unsigned long)str_size(dsc));

    /* <icon creation> */

    RegCreateKey(clskey, uni("DefaultIcon"), &tmpkey);

    memset(tmpbuf, 0, sizeof(tmpbuf));
    str_itos(icidx, tmpbuf, 10);
    str_cpy(icdat, icpath);
    str_cat(icdat, uni(","));
    str_cat(icdat, tmpbuf);

    RegSetValue(tmpkey, 0, REG_SZ, icdat, (unsigned long)str_size(icdat));

    RegCloseKey(tmpkey);

    /* </icon creation> */

    /* <shell> */

    RegCreateKey(clskey, uni("shell"), &tmpkey);

    RegSetValue(tmpkey, 0, REG_SZ, acname, (unsigned long)str_size(acname));

    RegCreateKey(tmpkey, acname, &tmpkey2);

    RegSetValue(tmpkey2, 0, REG_SZ, lacname, (unsigned long)str_size(lacname));

    RegCreateKey(tmpkey2, uni("command"), &tmpkey3);

    memset(kval, 0, sizeof(kval));
    str_cpy(kval, uni("\""));
    str_cat(kval, accmd);
    str_cat(kval, uni("\" \"%1\"")); /* "%1" */

    RegSetValue(tmpkey3, 0, REG_SZ, kval, (unsigned long)str_size(kval));

    RegCloseKey(tmpkey3);
    RegCloseKey(tmpkey2);
    RegCloseKey(tmpkey);
    RegCloseKey(clskey);
    RegCloseKey(rkey);

    str_cpy(apcls, uni("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\"));
    str_cat(apcls, apext);

    RegOpenKey(HKEY_CURRENT_USER, apcls, &rkey);
    RegDeleteValue(rkey, uni("Application"));
    RegDeleteValue(rkey, uni("ProgID"));
    RegCloseKey(rkey);

    /* </shell> */
    return 1;
}
示例#7
0
文件: keyboard.c 项目: hownam/fennec
unsigned long kb_action(unsigned short fkey, struct setting_key *kcol, int kcount)
{
	unsigned short kp = keypurpose_null;
	int   i;
	
	for(i=0; i<kcount; i++)
	{
		if(kcol[i].kcomb == fkey)
		{
			kp = kcol[i].kaction;
			break;
		}else if(kcol[i].kcomb == 0 && kcol[i].kaction == keypurpose_null){
			return 0;
		}
	}
	
	if(kp == keypurpose_null)return 0;

	switch(kp)
	{
	case keypurpose_play:
		audio_play();
		break;

	case keypurpose_pause:
		audio_pause();
		break;

	case keypurpose_stop:
		audio_stop();
		break;

	case keypurpose_load:
		GlobalFunction(Function_OpenFileDialog);
		break;
                  
	case keypurpose_rewind:
		GlobalFunction(Function_Rewind);
		break;

	case keypurpose_forward:
		GlobalFunction(Function_Forward);
		break;

	case keypurpose_previous:
		audio_playlist_previous();
		break;

	case keypurpose_next:
		audio_playlist_next();
		break;

	case keypurpose_eject:
		if(settings.player.selected_drive)
		{
			if(audio_playlist_getsource(audio_playlist_getcurrentindex())[0] == settings.player.selected_drive)audio_stop();
			audio_input_drive_eject((char)settings.player.selected_drive);
		}
		break;

	case keypurpose_select:
		if(settings.player.selected_drive)
		{
			int     i, c = audio_input_drive_gettracks((char)settings.player.selected_drive);
			letter  buf[128];
			letter  buf2[32];

			if(c > 0)
			{
				audio_playlist_clear();
				for(i=0; i<c; i++)
				{
					buf[0] = (letter)settings.player.selected_drive;
					str_cpy(buf + 1, uni(":\\Track"));
							
					memset(buf2, 0, sizeof(buf2));
					str_itos(i + 1, buf2, 10);
					str_cat(buf, buf2);
					str_cat(buf, uni(".cda"));

					audio_playlist_add(buf, 0, 0);
				}
				fennec_refresh(fennec_v_refresh_force_high);
			}
		}
		break;

	case keypurpose_panelsw_main:
		GlobalFunction(Function_MainPanel);
		break;

	case keypurpose_panelsw_color:
		GlobalFunction(Function_SelectThemePanel);
		break;

	case keypurpose_panelsw_visualization:
		//Display_ShowPanel(PanelID_Visualization);
		break;

	case keypurpose_panelsw_equalizer:
		GlobalFunction(Function_EqualizerPanel);
		break;

	case keypurpose_panelsw_mediainfo:
		break;

	case keypurpose_panelsw_playlist:
		break;

	case keypurpose_panelnext:
		//Display_ShowPanel_Next();
		break;

	case keypurpose_panelprevious:
		//Display_ShowPanel_Back();
		break;

	case keypurpose_exit:
		fennec_power_set(fennec_power_mode_default);
		break;

	case keypurpose_sleep:
		fennec_power_sleep();
		break;

	case keypurpose_minimize:
		ShowWindow(window_main,SW_MINIMIZE);
		break;

	case keypurpose_refresh:
		fennec_refresh(fennec_v_refresh_force_full);
		break;

	case keypurpose_conversion:
		basewindows_show_conversion(0);
		break;

	case keypurpose_ripping:
		basewindows_show_ripping(1);
		break;

	case keypurpose_joining:
		BaseWindows_ShowJoining(1);
		break;

	case keypurpose_visualization:

		break;

	case keypurpose_playlist:

		break;

	case keypurpose_volumeup:
		{
			double vl = 0.0f, vr = 0.0f;
			audio_getvolume(&vl, &vr);
			vl += 0.05;
			vr += 0.05;
			if(vl > 1.0f)vl = 1.0f;
			if(vr > 1.0f)vr = 1.0f;

			audio_setvolume(vl, vr);

			fennec_refresh(fennec_v_refresh_force_not);
		}
		break;

	case keypurpose_volumedown:
		{
			double vl = 0.0f, vr = 0.0f;
			audio_getvolume(&vl, &vr);
			vl -= 0.05;
			vr -= 0.05;
			if(vl < 0.0f)vl = 0.0f;
			if(vr < 0.0f)vr = 0.0f;

			audio_setvolume(vl, vr);

			fennec_refresh(fennec_v_refresh_force_not);
		}
		break;

	case keypurpose_volumeup_auto:
		Menu_MainProc(menu_vol_autoinc);
		break;

	case keypurpose_volumedown_auto:
		Menu_MainProc(menu_vol_autodec);
		break;

	case keypurpose_volumemin:
		audio_setvolume(0.0f, 0.0f);
		fennec_refresh(fennec_v_refresh_force_not);
		break;

	case keypurpose_volumemax:
		audio_setvolume(1.0f, 1.0f);
		fennec_refresh(fennec_v_refresh_force_not);
		break;

	case keypurpose_addfile:
		GlobalFunction(Function_AddFileDialog);
		break;

	case keypurpose_fast_load:
		break;

	case keypurpose_fast_addfile:
		break;

	case keypurpose_preferences:
		settings_ui_show();
		break;

	case keypurpose_keyboardviewer:
		break;

	case keypurpose_currenttagging:
		basewindows_show_tagging(0, audio_playlist_getsource(audio_playlist_getcurrentindex()));
		break;

	case keypurpose_switch_main:
		SetFocus(window_main);
		break;

	case keypurpose_switch_playlist:
		if(GetFocus() != window_main)
		{
			SetFocus(window_main);
		}else{
			HWND plwnd;

			skins_function_getdata(get_window_playlist, &plwnd, 0);
			
			if(plwnd)
			{
				SetFocus(plwnd);
				break;
			}
		}
		break;

	case keypurpose_playlist_autoswitching:
		settings.player.auto_switching ^= 1;
		break;

	case keypurpose_playlist_shuffle:
		if(settings.player.playlist_shuffle)
			audio_playlist_setshuffle(0, 1);
		else
			audio_playlist_setshuffle(1, 1);

		break;

	case keypurpose_playlist_information:
		/* [todo] wrong!! */
		basewindows_show_tagging(0, audio_playlist_getsource(audio_playlist_getcurrentindex()));
		break;

	case keypurpose_playlist_repeatall:
		settings.player.playlist_repeat_list ^= 1;
		break;

	case keypurpose_playlist_repeatsingle:
		settings.player.playlist_repeat_single ^= 1;
		break;

	case keypurpose_playlist_insert:
		GlobalFunction(Function_AddFileDialog);
		fennec_refresh(fennec_v_refresh_force_high);
		break;

	case keypurpose_playlist_insertdir:
		{
			letter        fpath[v_sys_maxpath];
			BROWSEINFO    bi;
			LPITEMIDLIST  lpi;

			fpath[0] = 0;

			bi.hwndOwner      = window_main;
			bi.lpszTitle      = uni("Add to playlist.");
			bi.pszDisplayName = fpath;
			bi.lpfn           = 0;
			bi.iImage         = 0;
			bi.lParam         = 0;
			bi.pidlRoot       = 0;
			bi.ulFlags        = BIF_RETURNONLYFSDIRS;

			lpi = SHBrowseForFolder(&bi);
			SHGetPathFromIDList(lpi, fpath);

			if(str_len(fpath))
			{
				AddDirectory(fpath);
			}
			fennec_refresh(fennec_v_refresh_force_high);
		}
		break;

	case keypurpose_playlist_remove:

		break;


	}
	
	return 1;
}