/*
*******************************************************************************
*                     ShowPictureEx
*
* Description:
*   把图片数据解析到指定的地址中,并且显示出来.
* 如果指定的地址为NULL, 则可以存放在任何地址。
*
* Parameters:
*   Para  	:  input.  Boot阶段的参数。
*   Path 	:  input.  图片存放在介质中的位置,如“c:\logo.bmp”
*   Addr	:  input.  存放解析后的图片,
*
* Return value:
*    0  :  成功
*   !0  :  失败
*
* note:
*   void
*
*******************************************************************************
*/
__u32 ShowPictureEx(char *Path, __u32 address)
{
	Picture_t PictureInfo;
	__s32 ret = 0;
	display_layer_info_t *layer_para = NULL;

	/* 参数初始化 */
	if(!board_res.layer_hd)
    {
        return 0;
    }
	memset(&PictureInfo, 0, sizeof(Picture_t));

	ret = Parse_Pic_BMP_ByPath(Path, &PictureInfo, address);
	if(ret != 0)
	{
		DMSG_PANIC("ERR: Parse_Pic_BMP failed\n");
		goto error;
	}

	/* 显示图片 */
	layer_para = ui_AllocLayerPara(&PictureInfo);
	ShowLayer(board_res.layer_hd, layer_para, board_res.display_source);
    #ifndef SPEED_UP_BOOT
	wBoot_timer_delay(50);
    #endif
    return (__u32)layer_para;

error:

	return 0;
}
/*
*******************************************************************************
*                     ShowPicture
*
* Description:
*   以图片的存储路径来显示一张图片
*
* Parameters:
*   Path    :  需要显示的图片路径,只支持BMP格
*   picture_group : 图片个数,最多同时有8个
*   show_way:  显示方式       参数保留,暂时不支持
*              要求所有图片的大小一致
* Return value:
*    0  :  成功
*   !0  :  失败
*
* note:
*   void
*
*******************************************************************************
*/
__s32 LCD_DisplayInit(void)
{
    __u32 	   screen_width = 0;
    char       font_name[16];

    display_layer_info_t *layer_para = NULL;
    /* 参数初始化 */
    memset(&display_info, 0, sizeof(display_info_set_t));
    memset(font_name, 0, 16);
	//获取字体大小
	screen_width = De_GetSceenWidth();
	if(screen_width > 480)
	{
		WORD_SIZE = 32;
		strcpy(font_name, "c:\\font32.sft");
	}
	else
	{
		WORD_SIZE = 24;
		strcpy(font_name, "c:\\font24.sft");
    }
    //申请一个图层用于显示,并获取display buffer的地址
    layer_para = LCD_DisplayAllocLayerPara();
    if(!layer_para)
    {
        return -1;
    }
    open_font(font_name, WORD_SIZE, display_info.screen_width,  display_info.screen_buf);   //打开字库
    /* 显示图片 */
	ShowLayer(board_res.layer_hd, layer_para);
    wBoot_timer_delay(50);

	return 0;
}
Exemple #3
0
void CGameLevel::OpenUpgradeLayer()
{
    if (!mUpgradeLayer)
    {
        CCArray * ccbNameArr = CCArray::create();
        CCArray * loaderArr = CCArray::create();
        
        ccbNameArr->addObject(CCString::create("UpgradeLayer"));
        ccbNameArr->addObject(CCString::create("PlaneDisplayLayer"));
        ccbNameArr->addObject(CCString::create("PlanAttributeLayer"));
        ccbNameArr->addObject(CCString::create("MenuTopBarLayer"));
        
        
        loaderArr->addObject(UpgradeLayerLoader::loader());
        loaderArr->addObject(PlaneDisplayLayerLoader::loader());
        loaderArr->addObject(PlanAttributeLayerLoader::loader());
        loaderArr->addObject(MenuTopBarLayerLoader::loader());
        
        mUpgradeLayer = (UpgradeLayer*)CCBManager::LoadCCBByNameAndLoader(ccbNameArr, loaderArr);
        mUpgradeLayer->SetDelegate(this);
        addChild(mUpgradeLayer);
        
    }
    ShowLayer(mUpgradeLayer);
}
__u32 ShowBatteryCharge_init(int rate)
{
	bat_charge_show *battery_info = NULL;
	__s32 			 ret = 0, i;
	char             pic_name[32];

	/* 参数初始化 */
	if(!board_res.layer_hd)
    {
        return 0;
    }
    battery_info = wBoot_malloc(sizeof(bat_charge_show));
    if(!battery_info)
    {
    	return 0;
    }
    memset(battery_info, 0, sizeof(bat_charge_show));
    memset(pic_name, 0, 32);
    strcpy(pic_name, "c:\\os_show\\bat0.bmp");

	for(i=0;i<10;i++)
	{
		pic_name[14] = '0' + i;
		ret = Parse_Pic_BMP_ByPath(pic_name, &battery_info->battery[i], 0);
		if(ret != 0)
		{
			__inf("parser bmp file %s failed\n", pic_name);
			return 0;
		}
	}
	ret = Parse_Pic_BMP_ByPath("c:\\os_show\\bat10.bmp", &battery_info->battery[10], 0);
	if(ret != 0)
	{
		__inf("parser bmp file c:\\os_show\\bat10.bmp failed\n");
		return 0;
	}

	battery_info->PictureInfo.BitCount = battery_info->battery[0].BitCount;
	battery_info->PictureInfo.Height = battery_info->battery[0].Height;
	battery_info->PictureInfo.Width  = battery_info->battery[0].Width;
	battery_info->PictureInfo.BufferSize = battery_info->PictureInfo.Width * battery_info->PictureInfo.Height * 4;
	battery_info->PictureInfo.Buffer = wBoot_malloc(battery_info->PictureInfo.BufferSize);
	battery_info->PictureInfo.RowSize = battery_info->PictureInfo.Width * 4;
	battery_info->buffersize = battery_info->PictureInfo.BufferSize;
	if(!battery_info->PictureInfo.Buffer)
	{
		return 0;
	}
	memcpy(battery_info->PictureInfo.Buffer, battery_info->battery[0].Buffer, battery_info->PictureInfo.BufferSize);
	/* 显示图片 */
	battery_info->layer_para = ui_AllocLayerPara(&battery_info->PictureInfo);
	ShowLayer(board_res.layer_hd, battery_info->layer_para, board_res.display_source);

    return (__u32)battery_info;
}
Exemple #5
0
void CGameLevel::OpenBuyPowerLayer()
{
    if (!mBuyPowerLayer)
    {
        mBuyPowerLayer = (BuyPowerLayer*)CCBManager::LoadCCBByNameAndLoader("BuyPowerLayer", BuyPowerLayerLoader::loader());
        addChild(mBuyPowerLayer);
        mBuyPowerLayer->SetDelegate(this);
    }
    
    ShowLayer(mBuyPowerLayer);
}
Exemple #6
0
void CGameLevel::OpenStartGameLayer()
{
    if (!mStartGameLayer)
    {
        mStartGameLayer = (StartGameLayer*)CCBManager::LoadCCBByNameAndLoader("StartGameLayer", StartGameLayerLoader::loader());
        mStartGameLayer->SetDelegate(this);
        addChild(mStartGameLayer);
        
    }
    ShowLayer(mStartGameLayer);
}
Exemple #7
0
void CGameLevel::OpenGiftBagLayer()
{
    if (!mGiftBagLayer)
    {
        mGiftBagLayer = (GiftBagLayer*)CCBManager::LoadCCBByNameAndLoader("GiftBagLayer", GiftBagLayerLoader::loader());
        mGiftBagLayer->SetDelegate(this);
        addChild(mGiftBagLayer);
        
    }
    
    ShowLayer(mGiftBagLayer);
}
void CLayerTreeDlg::ShowLayer(HTREEITEM hItem, BOOL bShow)
{
	CString sLayerName = m_tree.GetItemText(hItem);

	HTREEITEM hChild = m_tree.GetNextItem(hItem,TVGN_CHILD);

	// 只有树叶才有对应的图层
	if (hChild == NULL)
	{
		ShowLayer(sLayerName, bShow);
		//如果是面层,还要把它的填充图层打开
		CString sHatchLayer;
		sHatchLayer.Format("%s_填充",sLayerName);
		bool hasHatch = false;
		acDocManager->lockDocument(acDocManager->curDocument());
		AcDbLayerTable * pLayerTbl = NULL;
		Acad::ErrorStatus es =
		acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTbl,AcDb::kForRead);
		if (pLayerTbl->has(sHatchLayer))
		{
			AcDbLayerTableRecord * pLayerTbRcd = NULL;
			es = pLayerTbl->getAt(sHatchLayer,pLayerTbRcd,AcDb::kForWrite);
			pLayerTbRcd->setIsOff(bShow == 0);
			pLayerTbRcd->close();
			hasHatch = true;
		}
		pLayerTbl->close();
		acDocManager->unlockDocument(acDocManager->curDocument());
	}

	while(hChild != NULL)
	{
		ShowLayer(hChild, bShow);
		hChild = m_tree.GetNextItem(hChild,TVGN_NEXT);
	}
}
Exemple #9
0
void CGameLevel::InitBottomLayer()
{
    
    CCArray * ccbNameArr = CCArray::create();
    CCArray * loaderArr = CCArray::create();
    
    ccbNameArr->addObject(CCString::create("LevelBottomLayer"));
    ccbNameArr->addObject(CCString::create("MenuTopBarLayer"));
    
    loaderArr->addObject(LevelBottomLayerLoader::loader());
    loaderArr->addObject(MenuTopBarLayerLoader::loader());
    
    LevelBottomLayer * layer = (LevelBottomLayer*)CCBManager::LoadCCBByNameAndLoader(ccbNameArr, loaderArr);
    layer->SetDelegate(this);
    addChild(layer);
    ShowLayer(layer);
}
/*
*******************************************************************************
*                     ShowPicture
*
* Description:
*   以图片的存储路径来显示一张图片
*
* Parameters:
*   Path    :  需要显示的图片路径,只支持BMP格
*   picture_group : 图片个数,最多同时有8个
*   show_way:  显示方式       参数保留,暂时不支持
*              要求所有图片的大小一致
* Return value:
*    0  :  成功
*   !0  :  失败
*
* note:
*   void
*
*******************************************************************************
*/
__hdle ShowMultiPicture(pic_name_info_t *pic_name_info, __u32 picture_group, __u32 show_way)
{
    __s32     ret;
    __u32     i, j = 0;
    __u32     tmp_left, tmp_top, tmp_width;
    char     *tmp_addr, *base_tmp_addr;
    char     *tmp_pic_addr;
    __u32     pic_width, pic_height;
    ui_show_multi_set_t  *pic_info = NULL;

    /* 参数初始化 */
    if(!board_res.layer_hd)
    {
        return (__hdle)0;
    }
	//寻找出所有的图片格式
	if(picture_group > 8)
	{
	    picture_group = 8;
	}
	pic_info = (ui_show_multi_set_t *)wBoot_malloc(sizeof(ui_show_multi_set_t));
	if(!pic_info)
	{
	    return (__hdle)0;
	}
	memset((void *)pic_info, 0, sizeof(ui_show_multi_set_t));
	pic_info->pic_total = picture_group;
	for(i=0;i<picture_group;i++)
	{
	    for(j=0;j<pic_name_info[i].valid_num;j++)
	    {
	        ret = Parse_Pic_BMP_ByPath(pic_name_info[i].name[j], &(pic_info->pic[i].PictureInfo[pic_info->pic[i].valid_num]), 0);
    	    if(ret)
            {
                __inf("decode %s bmp file failed\n", pic_name_info[i].name[j]);
            }
            else
            {
                pic_info->pic[i].valid_num ++;
            }
        }
	}
	//申请一个图层用于显示,并获取display buffer的地址
    pic_info->layer_para = ui_multi_AllocLayerPara((void *)&(pic_info->lcd_info), 0);
    //根据获取的用户数据,开始填充参数
    //暂时只做左右排列

    //按照从左到右摆放的方式,寻找每个编组的图应该在的位置
    pic_width    = pic_info->pic[0].PictureInfo[0].Width;
    pic_height   = pic_info->pic[0].PictureInfo[0].Height;

    tmp_top  = ( pic_info->lcd_info.lcd_height - pic_height)>>1;
    tmp_width= pic_info->lcd_info.lcd_width/picture_group;
    tmp_left = (tmp_width - pic_width)>>1;
    for(i=0;i<picture_group;i++)
    {
        pic_info->pic[i].left = tmp_left + i * tmp_width;
        pic_info->pic[i].top  = tmp_top;
    }
    //开始贴图,第一次
    base_tmp_addr = (char *)pic_info->lcd_info.display_buffer;
    base_tmp_addr += tmp_top * pic_info->lcd_info.lcd_width * 4;
    //开始一个图一个图的开始贴图
    for(i=0;i<picture_group;i++)
    {
        tmp_addr = base_tmp_addr + (pic_info->pic[i].left<<2);
        tmp_pic_addr = (char *)pic_info->pic[i].PictureInfo[0].Buffer;
        for(j=0;j<pic_height;j++)
        {
            memcpy(tmp_addr, tmp_pic_addr, pic_width << 2);
            tmp_addr += pic_info->lcd_info.lcd_width * 4;
            tmp_pic_addr += pic_width << 2;
        }
    }
	/* 显示图片 */
	ShowLayer(board_res.layer_hd, pic_info->layer_para, board_res.display_source);
    wBoot_timer_delay(50);

	return (__hdle)pic_info;
}
//-----------------------------------------------------------------------------
void CLayerTreeDlg::OnNMClickLayerTree(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;

	UINT uFlag;
	CPoint pt;
	CString sSelLayer;
	HTREEITEM SelRoot,ParRoot,NexRoot;

	pt = CPoint(this->GetCurrentMessage()->pt);
	m_tree.ScreenToClient(&pt);
	SelRoot = m_tree.HitTest(pt,&uFlag);

	if (NULL == SelRoot)
		return;

	if (uFlag & TVHT_ONITEMSTATEICON)
	{
		BOOL bChecked = m_tree.GetCheck(SelRoot);
		//置反选中状态
		SetTreeCheck(SelRoot, !bChecked);

		//分析是否有必要对树枝进行调整
		ParRoot = m_tree.GetParentItem(SelRoot);
		while (ParRoot != NULL)
		{
			if (bChecked)
				m_tree.SetCheck(ParRoot,FALSE);//当前处在被选择状态即将被取消选择
			else
			{
				int k=0;//当前处在非选择状态即将有可能处于选择状态(标志位)
				NexRoot=m_tree.GetNextItem(ParRoot,TVGN_CHILD);
				if(NexRoot!=SelRoot)
				{
					if(!m_tree.GetCheck(NexRoot)) k=1;
				}
				if(k==0)
				{
					while(TRUE)
					{
						NexRoot=m_tree.GetNextItem(NexRoot,TVGN_NEXT);
						if(NexRoot==NULL) break;
						if(NexRoot==SelRoot) continue;
						if(!m_tree.GetCheck(NexRoot))
						{
							k=1;
							break;
						}
					}
				}
				if(k==0) m_tree.SetCheck(ParRoot);
			}
			ParRoot = m_tree.GetParentItem(ParRoot);
		}

		m_tree.SetCheck(SelRoot, bChecked);

		ShowLayer(SelRoot, !bChecked);

//		sendCommandToAutoCAD("redraw ");
	}

	else if(!m_tree.ItemHasChildren(SelRoot)) 
	{
		CString strLayerName = m_tree.GetItemText(SelRoot);

		Acad::ErrorStatus es = Acad::eOk;

		AcDbDatabase* pDB = acdbHostApplicationServices()->workingDatabase();

		if (NULL == pDB)
			return;

		AcDbLayerTable *pLyTable = NULL;
		AcDbLayerTableRecord *pLyRcd = NULL;

		es = pDB->getSymbolTable(pLyTable,AcDb::kForRead);            //获得当前数据库中层表指针
		if ( es != Acad::eOk ) 
		{
			acutPrintf("\n获取LayerTable的时候发生错误,请稍后再试。\n");
			return;
		}

		if ( !pLyTable->has(strLayerName) )
		{
			pLyTable->close();
			return;
		}

		pLyTable->close();

		SetCurrentLayer(strLayerName);
	}
}