亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pman_visview.cpp

?? fortran并行計算包
?? CPP
字號:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* *  (C) 2001 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */// pman_visView.cpp : implementation of the Cpman_visView class//#include "stdafx.h"#include "pman_vis.h"#include "pman_visDoc.h"#include "pman_visView.h"#include ".\pman_visview.h"#include "ConnectDialog.h"#include "BoundsDlg.h"#include "DemoPointsDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#endifint connect_to_pmandel(const char *host, int port, int &width, int &height);int send_xyminmax(double xmin, double ymin, double xmax, double ymax, int max_iter);int get_pmandel_data();int mpi_connect_to_pmandel(const char *port, int &width, int &height);int mpi_send_xyminmax(double xmin, double ymin, double xmax, double ymax, int max_iter);int mpi_get_pmandel_data();void mpi_thread_fn(void *p);void mpi_barrier_client();void mpi_barrier_thread();void mpi_init();void mpi_disconnect();void mpi_finalize();int g_width, g_height;HDC g_hDC = NULL;HANDLE g_hMutex = NULL;HWND g_hWnd;bool g_bDrawing;double g_xmin, g_xmax, g_ymin, g_ymax;int g_max_iter;bool g_bDemoMode;CExampleNode *g_demo_list, *g_cur_node;bool g_bUseMPI = true;HANDLE g_hEventA = NULL;HANDLE g_hEventB = NULL;HANDLE g_hEventC = NULL;HANDLE g_hEventD = NULL;HANDLE g_hMPIThread = NULL;char g_mpi_port[256];// Cpman_visViewIMPLEMENT_DYNCREATE(Cpman_visView, CView)BEGIN_MESSAGE_MAP(Cpman_visView, CView)	// Standard printing commands	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)	ON_COMMAND(ID_FILE_CONNECT, OnFileConnect)	ON_WM_LBUTTONDOWN()	ON_WM_LBUTTONUP()	ON_WM_ERASEBKGND()	ON_WM_MOUSEMOVE()	ON_WM_RBUTTONUP()	ON_COMMAND(ID_FILE_ENTERPOINT, OnFileEnterpoint)	ON_COMMAND(ID_FILE_ENTERDEMOPOINTS, OnFileEnterdemopoints)	ON_COMMAND(ID_FILE_STOPDEMO, OnFileStopdemo)END_MESSAGE_MAP()// Cpman_visView construction/destructionCpman_visView::Cpman_visView(){    g_hMutex = CreateMutex(NULL, FALSE, NULL);    g_bDrawing = false;    g_bDemoMode = false;    bConnected = false;    m_hThread = NULL;    g_demo_list = NULL;    g_cur_node = NULL;    g_xmin = -1;    g_xmax = 1;    g_ymin = -1;    g_ymax = 1;    g_max_iter = 100;    g_hEventA = CreateEvent(NULL, TRUE, FALSE, NULL);    g_hEventB = CreateEvent(NULL, TRUE, FALSE, NULL);    g_hEventC = CreateEvent(NULL, TRUE, FALSE, NULL);    g_hEventD = CreateEvent(NULL, TRUE, FALSE, NULL);    g_hMPIThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)mpi_thread_fn, NULL, 0, NULL);    mpi_barrier_client();}Cpman_visView::~Cpman_visView(){    g_bDemoMode = false;    CloseHandle(g_hMutex);    if (g_hMPIThread != NULL)    {	g_xmin = g_xmax = g_ymin = g_ymax = 0.0;	mpi_barrier_client();	WaitForSingleObject(g_hMPIThread, INFINITE);    }    if (m_hThread != NULL)    {	WaitForSingleObject(m_hThread, INFINITE);	CloseHandle(m_hThread);	send_xyminmax(0, 0, 0, 0, 0);    }}BOOL Cpman_visView::PreCreateWindow(CREATESTRUCT& cs){    return CView::PreCreateWindow(cs);}// Cpman_visView drawingvoid Cpman_visView::OnDraw(CDC* pDC){    RECT r, r2;    Cpman_visDoc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    if (!pDoc)	return;    GetClientRect(&r);    if (g_hDC != NULL)    {	WaitForSingleObject(g_hMutex, INFINITE);	BitBlt(pDC->m_hDC,	    r.left, r.top,	    min(g_width, r.right - r.left),	    min(g_height, r.bottom - r.top),	    g_hDC, 0, 0, SRCCOPY);	ReleaseMutex(g_hMutex);	if (r.right - r.left > g_width)	{	    r2 = r;	    r2.left = r2.left + g_width;	    pDC->FillSolidRect(&r2, 0);	}	if (r.bottom - r.top > g_height)	{	    r2 = r;	    r2.top = r2.top + g_height;	    pDC->FillSolidRect(&r2, 0);	}    }    else    {	pDC->FillSolidRect(&r, 0);    }}// Cpman_visView printingBOOL Cpman_visView::OnPreparePrinting(CPrintInfo* pInfo){    return DoPreparePrinting(pInfo);}void Cpman_visView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){}void Cpman_visView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){}// Cpman_visView diagnostics#ifdef _DEBUGvoid Cpman_visView::AssertValid() const{	CView::AssertValid();}void Cpman_visView::Dump(CDumpContext& dc) const{	CView::Dump(dc);}Cpman_visDoc* Cpman_visView::GetDocument() const // non-debug version is inline{	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(Cpman_visDoc)));	return (Cpman_visDoc*)m_pDocument;}#endif //_DEBUG// Cpman_visView message handlersint get_next_demo_data(){    if (g_cur_node == NULL)	g_cur_node = g_demo_list;    if (g_cur_node == NULL)    {	/* error */	mpi_send_xyminmax(0, 0, 0, 0, 0);	mpi_disconnect();	mpi_finalize();	return -1;    }    g_xmin = g_cur_node->xmin;    g_xmax = g_cur_node->xmax;    g_ymin = g_cur_node->ymin;    g_ymax = g_cur_node->ymax;    g_max_iter = g_cur_node->max_iter;    g_cur_node = g_cur_node->next;    return 0;}int work_thread(void *p){    if (g_bDemoMode)    {	while (g_bDemoMode)	{	    if (get_next_demo_data())		return -1;	    send_xyminmax(g_xmin, g_ymin, g_xmax, g_ymax, g_max_iter);	    get_pmandel_data();	    if (g_bDemoMode)	    {		Sleep(5000);	    }	}    }    else    {	send_xyminmax(g_xmin, g_ymin, g_xmax, g_ymax, g_max_iter);	get_pmandel_data();    }    g_bDrawing = false;    return 0;}int mpi_work_thread(void *p){    mpi_send_xyminmax(g_xmin, g_ymin, g_xmax, g_ymax, g_max_iter);    mpi_get_pmandel_data();    g_bDrawing = false;    return 0;}void mpi_barrier_client(){    SetEvent(g_hEventA);    WaitForSingleObject(g_hEventB, INFINITE);    ResetEvent(g_hEventB);    SetEvent(g_hEventD);    WaitForSingleObject(g_hEventC, INFINITE);    ResetEvent(g_hEventC);}void mpi_barrier_thread(){    SetEvent(g_hEventB);    WaitForSingleObject(g_hEventA, INFINITE);    ResetEvent(g_hEventA);    SetEvent(g_hEventC);    WaitForSingleObject(g_hEventD, INFINITE);    ResetEvent(g_hEventD);}void mpi_thread_fn(void *p){    mpi_barrier_thread();    mpi_init();    mpi_barrier_thread();    if ((g_xmin != g_xmax) && (g_ymin != g_ymax))    {	/*mpi_connect_to_pmandel(g_mpi_port, g_width, g_height);*/	if (g_bDemoMode)	{	    if (get_next_demo_data())		return;	}	else	    mpi_barrier_thread();	while ((g_xmin != g_xmax) && (g_ymin != g_ymax))	{	    mpi_work_thread(NULL);	    if (g_bDemoMode)	    {		Sleep(5000);		if (get_next_demo_data())		    return;	    }	    else	    {		mpi_barrier_thread();	    }	}	mpi_send_xyminmax(0, 0, 0, 0, 0);	mpi_disconnect();    }    mpi_finalize();    return;}void Cpman_visView::OnFileConnect(){    CConnectDialog dlg;    char host[100];    DWORD len;    CBitmap *canvas;    if (bConnected)    {	MessageBox("You may only connect once.", "Note");	return;    }    len = 100;    GetComputerName(host, &len);    dlg.m_pszHost = host;    dlg.m_nPort = 7470;    if (dlg.DoModal() == IDOK)    {	if (dlg.m_type == CConnectDialog::MPI_CONNECT)	{	    strcpy(g_mpi_port, dlg.m_pszMPIPort);	    /* If I connect in the thread, the gui goes bananas	    mpi_barrier_client();	    */	    /* If I connect here in the main thread, everything is ok */	    if (mpi_connect_to_pmandel(dlg.m_pszMPIPort, g_width, g_height) != 0)	    {		return;	    }	    mpi_barrier_client();	    	    g_bUseMPI = true;	}	else	{	    if (connect_to_pmandel(dlg.m_pszHost, dlg.m_nPort, g_width, g_height) != 0)	    {		return;	    }	    g_bUseMPI = false;	}	g_hWnd = m_hWnd;	g_hDC = CreateCompatibleDC(NULL);	canvas = new CBitmap();	canvas->CreateBitmap(		g_width, 		g_height, 		GetDeviceCaps(g_hDC, PLANES),		GetDeviceCaps(g_hDC, BITSPIXEL),		NULL);	SelectObject(g_hDC, *canvas);	g_bDrawing = true;	if (g_bUseMPI)	{	    //m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)mpi_work_thread, NULL, 0, NULL);	    mpi_barrier_client();	}	else	    m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)work_thread, NULL, 0, NULL);	bConnected = true;    }}void Cpman_visView::OnLButtonDown(UINT nFlags, CPoint point){    if (!g_bDrawing)    {	SIZE size;	CDC *pDC = GetDC();	m_p1 = point;	m_rLast.left = point.x;	m_rLast.right = point.x;	m_rLast.top = point.y;	m_rLast.bottom = point.y;	size.cx = 2;	size.cy = 2;	pDC->DrawDragRect(&m_rLast, size, NULL, size);    }    CView::OnLButtonDown(nFlags, point);}void Cpman_visView::OnMouseMove(UINT nFlags, CPoint point){    CDC *pDC;    RECT r;    SIZE size;    if (nFlags & MK_LBUTTON && !g_bDrawing)    {	pDC = GetDC();	r.left = min(m_p1.x, point.x);	r.right = max(m_p1.x, point.x);	r.top = min(m_p1.y, point.y);	r.bottom = max(m_p1.y, point.y);	size.cx = 2;	size.cy = 2;	pDC->DrawDragRect(&r, size, &m_rLast, size);	m_rLast = r;    }    CView::OnMouseMove(nFlags, point);}void Cpman_visView::OnLButtonUp(UINT nFlags, CPoint point){    RECT r;    double x1,y1,x2,y2;    double width, height, pixel_width, pixel_height;    CDC *pDC;    SIZE size;    if (!g_bDrawing)    {	pDC = GetDC();	size.cx = 2;	size.cy = 2;	pDC->DrawDragRect(&m_rLast, size, NULL, size);    }    if (!g_bDrawing && (m_hThread || (g_bUseMPI && g_hMPIThread)))    {	if (m_p1.x == point.x && m_p1.y == point.y)	{	    return CView::OnLButtonUp(nFlags, point);	}	if (m_hThread)	    CloseHandle(m_hThread);	if (point.x > g_width)	    point.x = g_width;	if (point.y > g_height)	    point.y = g_height;	if (m_p1.x > g_width)	    m_p1.x = g_width;	if (m_p1.y > g_height)	    m_p1.y = g_height;	m_p2 = point;	r = m_rLast;	width = g_xmax - g_xmin;	height = g_ymax - g_ymin;	pixel_width = g_width;	pixel_height = g_height;	x1 = g_xmin + ((double)r.left * width / pixel_width);	x2 = g_xmin + ((double)r.right * width / pixel_width);	y2 = g_ymin + ((double)(pixel_height - r.top) * height / pixel_height);	y1 = g_ymin + ((double)(pixel_height - r.bottom) * height / pixel_height);	g_xmin = x1;	g_xmax = x2;	g_ymin = y1;	g_ymax = y2;	g_bDrawing = true;	if (g_bUseMPI)	{	    //m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)mpi_work_thread, NULL, 0, NULL);	    mpi_barrier_client();	}	else	    m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)work_thread, NULL, 0, NULL);    }    CView::OnLButtonUp(nFlags, point);}BOOL Cpman_visView::OnEraseBkgnd(CDC* pDC){    return TRUE;    //return CView::OnEraseBkgnd(pDC);}void Cpman_visView::OnRButtonUp(UINT nFlags, CPoint point){    if (!g_bDrawing && (m_hThread || (g_bUseMPI && g_hMPIThread)))    {	if (m_hThread)	    CloseHandle(m_hThread);	g_xmin = -1;	g_xmax = 1;	g_ymin = -1;	g_ymax = 1;	g_max_iter = 100;	g_bDrawing = true;	if (g_bUseMPI)	{	    //m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)mpi_work_thread, NULL, 0, NULL);	    mpi_barrier_client();	}	else	    m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)work_thread, NULL, 0, NULL);    }    CView::OnRButtonUp(nFlags, point);}void Cpman_visView::OnFileEnterpoint(){    if (bConnected && (!g_bDrawing && (m_hThread || (g_bUseMPI && g_hMPIThread))))    {	CBoundsDlg dlg;	if (dlg.DoModal() == IDOK)	{	    if (m_hThread)		CloseHandle(m_hThread);	    g_xmin = dlg.m_xmin;	    g_xmax = dlg.m_xmax;	    g_ymin = dlg.m_ymin;	    g_ymax = dlg.m_ymax;	    g_max_iter = dlg.m_max_iter;	    g_bDrawing = true;	    if (g_bUseMPI)	    {		//m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)mpi_work_thread, NULL, 0, NULL);		mpi_barrier_client();	    }	    else		m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)work_thread, NULL, 0, NULL);	}    }}void Cpman_visView::OnFileEnterdemopoints(){    CDemoPointsDlg dlg;    if (dlg.DoModal() == IDOK)    {	g_demo_list = dlg.m_node_list;	g_cur_node = g_demo_list;	g_bDemoMode = true;	if (bConnected && (!g_bDrawing && (m_hThread || (g_bUseMPI && g_hMPIThread))))	{	    if (m_hThread)		CloseHandle(m_hThread);	    g_xmin = g_cur_node->xmin;	    g_xmax = g_cur_node->xmax;	    g_ymin = g_cur_node->ymin;	    g_ymax = g_cur_node->ymax;	    g_max_iter = g_cur_node->max_iter;	    g_bDrawing = true;	    if (g_bUseMPI)	    {		//m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)mpi_work_thread, NULL, 0, NULL);		mpi_barrier_client();	    }	    else		m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)work_thread, NULL, 0, NULL);	}    }}void Cpman_visView::OnFileStopdemo(){    g_bDemoMode = false;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女久久久精品| 欧美xxx久久| 樱花影视一区二区| 一本色道久久加勒比精品| 亚洲视频免费看| 91久久奴性调教| 日韩电影在线看| 91.com视频| 九九热在线视频观看这里只有精品| 精品少妇一区二区三区免费观看| 韩国精品在线观看| 中文字幕第一区二区| 日本韩国视频一区二区| 视频一区二区中文字幕| 久久综合久久久久88| 成人污污视频在线观看| 一区二区视频在线| 91精品婷婷国产综合久久竹菊| 久久99精品久久久| 中文字幕亚洲欧美在线不卡| 欧美在线一二三| 老汉av免费一区二区三区| 国产亚洲制服色| 色婷婷亚洲综合| 久久99精品久久久久久动态图| 国产精品天干天干在线综合| 精品视频在线免费观看| 国产在线播精品第三| 亚洲欧美区自拍先锋| 欧美大黄免费观看| 色综合久久中文综合久久97| 久久99精品久久久久婷婷| 亚洲欧美日韩在线不卡| 日韩精品一区二区三区四区 | 色婷婷综合久久久久中文 | 日韩一区二区在线播放| 高清在线成人网| 午夜日韩在线电影| 国产精品久久777777| 51精品视频一区二区三区| 国产91丝袜在线播放0| 日韩成人午夜精品| 亚洲免费观看高清完整版在线观看熊| 日韩精品一区二区三区视频| 欧美最猛性xxxxx直播| 国产精品一区二区你懂的| 午夜国产不卡在线观看视频| 亚洲国产精品黑人久久久| 日韩丝袜美女视频| 欧美在线制服丝袜| 波多野结衣精品在线| 免费在线观看成人| 一区二区三区精密机械公司| 欧美国产日韩亚洲一区| 日韩欧美国产一区二区三区 | 成人动漫中文字幕| 看电视剧不卡顿的网站| 午夜不卡在线视频| 一区二区三区欧美久久| 日韩理论片一区二区| 国产精品素人一区二区| 久久久久久久精| 精品av久久707| 欧美一区二区在线视频| 欧美三级视频在线| 色婷婷综合久久久久中文| 不卡的av在线播放| a级精品国产片在线观看| 久久超级碰视频| 免费成人在线观看| 人禽交欧美网站| 五月天久久比比资源色| 亚洲高清视频在线| 亚洲va天堂va国产va久| 亚洲精品免费在线| 亚洲精品免费一二三区| 亚洲免费av观看| 中文字幕日本不卡| 综合在线观看色| 亚洲视频中文字幕| 亚洲婷婷综合色高清在线| 亚洲欧洲精品成人久久奇米网 | 国产精品青草久久| 国产精品乱码一区二三区小蝌蚪| 亚洲国产成人午夜在线一区| 国产精品人人做人人爽人人添| 国产精品人成在线观看免费| 国产精品福利av| 亚洲精品国产成人久久av盗摄 | 国产精品久久久久三级| 中文字幕一区视频| 亚洲乱码精品一二三四区日韩在线| 亚洲视频香蕉人妖| 亚洲夂夂婷婷色拍ww47| 亚洲香肠在线观看| 免费成人av在线播放| 久久av中文字幕片| 国产成人av一区二区| 大胆欧美人体老妇| 色诱亚洲精品久久久久久| 在线免费亚洲电影| 欧美一区二区三区视频| 精品国精品国产| 亚洲国产精华液网站w| 亚洲综合小说图片| 美日韩黄色大片| 成人高清视频免费观看| 欧美在线短视频| 欧美一级在线免费| 中文字幕精品综合| 午夜精品一区在线观看| 国产在线不卡视频| 99riav一区二区三区| 欧美日韩mp4| 久久久久久久精| 亚洲一二三四区| 国产一区二区三区av电影| 93久久精品日日躁夜夜躁欧美| 欧美美女视频在线观看| 精品国产3级a| 亚洲精品自拍动漫在线| 精品一区二区三区在线视频| 一本大道久久a久久综合婷婷| 欧美一级片免费看| 亚洲色图视频网| 六月丁香婷婷久久| 色呦呦网站一区| 久久亚洲影视婷婷| 亚洲bt欧美bt精品777| 高清免费成人av| 精品少妇一区二区三区视频免付费 | 国产精品一区二区在线播放| 欧美在线不卡视频| 国产精品免费久久久久| 蜜臂av日日欢夜夜爽一区| 一本色道久久综合狠狠躁的推荐| 欧美va日韩va| 一区二区三区中文免费| 国产一区二区三区在线观看免费| 成人黄色软件下载| 久久久久国产精品人| 樱花影视一区二区| 国产一区二区三区日韩 | 亚洲成a人v欧美综合天堂下载| 国产麻豆午夜三级精品| 欧美午夜不卡在线观看免费| 国产亚洲欧美一区在线观看| 性久久久久久久| 色老头久久综合| 久久综合久久鬼色| 天天色天天操综合| 成人免费黄色大片| 国产性天天综合网| 日韩成人一区二区| 91久久线看在观草草青青| 国产视频在线观看一区二区三区| 免费看日韩a级影片| 91麻豆精品在线观看| 久久久99久久精品欧美| 喷白浆一区二区| 欧美精品在线视频| 亚洲美女少妇撒尿| 国产精品99久久久久久久女警| 欧美久久久久久久久中文字幕| 亚洲精品免费看| 99久久精品免费| 国产精品天干天干在线综合| 精品亚洲成av人在线观看| 日韩一区二区在线观看视频| 亚洲国产精品一区二区久久恐怖片| 成人免费高清在线观看| 国产亚洲人成网站| 亚洲h在线观看| 欧美视频在线一区二区三区| 亚洲精品国产视频| 91麻豆swag| 久久伊99综合婷婷久久伊| 日本美女一区二区| 91精品国产麻豆| 日韩高清不卡在线| 日韩午夜精品视频| 奇米精品一区二区三区在线观看一| 91啪亚洲精品| 亚洲美女免费在线| 在线不卡欧美精品一区二区三区| 《视频一区视频二区| 成人18视频在线播放| 国产精品乱码一区二区三区软件 | 17c精品麻豆一区二区免费| 国产大陆亚洲精品国产| 国产精品久久久久久久久晋中| 成人动漫精品一区二区| 国产精品国产三级国产普通话99| youjizz久久| 天天做天天摸天天爽国产一区| 欧美猛男超大videosgay| 欧美bbbbb| 久久网站最新地址| 91首页免费视频| 亚洲免费观看高清|