BOOL CLogFile::WriteLogFile(LPCTSTR log_message) { BOOL result = FALSE; _ASSERT(log_message); if (log_message) { LPSTR write_buf; int len = PrepareBuffer(log_message, _tcslen(log_message) + 1, &write_buf); if (len <= 0) return FALSE; EnterCriticalSection(log_cs); { HANDLE hFile = openLogFile(); if (hFile != INVALID_HANDLE_VALUE) { DWORD bytes; SetFilePointer(hFile, 0, NULL, FILE_END); _ASSERT(write_buf); if (WriteFile(hFile, write_buf, len - 1, &bytes, NULL)) { last_write_time = GetTickCount(); result = TRUE; } CloseHandle(hFile); } } LeaveCriticalSection(log_cs); VirtualFree(write_buf, 0, MEM_RELEASE); } else return TRUE; return result; }
void ReportGeneral(CHAIN **Chain, FILE *Out) { register int i; BUFFER Bf, Tmp; if( !Chain[0]->NInfo ) return; PrepareBuffer(Bf,Chain); Glue(Bf,"REM --------------------------------------------------------------------",Out); Glue(Bf,"REM",Out); Glue(Bf,"REM STRIDE: Knowledge-based secondary structure assignment",Out); Glue(Bf,"REM Please cite: D.Frishman & P.Argos, Proteins XX, XXX-XXX, 1995",Out); Glue(Bf,"REM",Out); Glue(Bf,"REM Residue accessible surface area calculation",Out); Glue(Bf,"REM Please cite: F.Eisenhaber & P.Argos, J.Comp.Chem. 14, 1272-1280, 1993 ",Out); Glue(Bf,"REM F.Eisenhaber et al., J.Comp.Chem., 1994, submitted",Out); Glue(Bf,"REM",Out); sprintf(Tmp,"REM ------------------------ "); strcat(Tmp,"General information"); strcat(Tmp," -----------------------"); Glue(Bf,Tmp,Out); Glue(Bf,"REM",Out); for( i=0; i<Chain[0]->NInfo; i++ ) { strcpy(Tmp,Chain[0]->Info[i]); Tmp[66] = '\0'; Replace(Tmp,'\n',' '); Glue(Bf,Tmp,Out); } Glue(Bf,"REM",Out); }
void ReportTurnTypes(CHAIN **Chain, int NChain, FILE *Out, COMMAND *Cmd) { register int Cn, Tn; BUFFER Bf, Tmp; TURN *t; Tn = 0; for( Cn=0; Cn<NChain; Cn++ ) if( Chain[Cn]->Valid ) Tn += Chain[Cn]->NAssignedTurn; if( !Tn ) return; PrepareBuffer(Bf,Chain); for( Cn=0; Cn<NChain; Cn++ ) { if( !Chain[Cn]->Valid ) continue; for( Tn=0; Tn<Chain[Cn]->NAssignedTurn; Tn++ ) { t = Chain[Cn]->AssignedTurn[Tn]; sprintf(Tmp,"LOC %-11s %3s %4s %c %3s %4s %c", Translate(t->TurnType),t->Res1,t->PDB_ResNumb1, SpaceToDash(Chain[Cn]->Id),t->Res2, t->PDB_ResNumb2,SpaceToDash(Chain[Cn]->Id)); Glue(Bf,Tmp,Out); } } }
void Rasterizer::setNewSize(int s) { if (s == m_renderingParams->size()) return; m_renderingParams->setSize(s); PrepareBuffer(); }
sound::OggData::OggData(void* Engine, const std::string& filename, bool looped) { #elif defined(USE_XAUDIO2) sound::OggData::OggData(IXAudio2** Engine, const std::string& filename, bool looped) { #else sound::OggData::OggData(LPDIRECTSOUND8* Engine, const std::string& filename, bool looped) { #endif Prepare(filename); PrepareBuffer(Engine, looped); }
//数据写入缓冲 bool IOBuffer::WriteData( char *data, int nSize ) { unsigned char *ioBuf = PrepareBuffer( nSize ); if ( NULL == ioBuf ) return false; memcpy( ioBuf, data, nSize ); WriteFinished( nSize ); return true; }
void Statistics::MeanSqr(Image& Source, double outVal[4]) { PrepareBuffer(Source); Kernel(reduce_mean_sqr, In(Source), Out(), *m_PartialResultBuffer, Source.Step(), Source.Width(), Source.Height()); m_PartialResultBuffer->Read(true); ReduceMean(m_PartialResult, Source.NbChannels(), outVal); }
void String::Erase(unsigned long at,unsigned long count) { ASSERT(m_Buffer); ASSERT(at + count <= m_Length); CopyMemory(m_Buffer + at,m_Buffer + at + count,(m_Length - at - count + 1) * sizeof(wchar_t)); m_Length -= count; PrepareBuffer(m_Length + 1,true); }
void String::Erase(unsigned int at,unsigned int count) { ASSERT(m_Buffer); ASSERT(at + count <= m_Length); CopyMemory(m_Buffer + at,m_Buffer + at + count,m_Length - at - count + 1); m_Length -= count; PrepareBuffer(m_Length + 1,true); }
uint Statistics::CountNonZero(Image& Source) { Check1Channel(Source); PrepareBuffer(Source); Kernel(reduce_count_nz, In(Source), Out(), *m_PartialResultBuffer, Source.Step(), Source.Width(), Source.Height()); m_PartialResultBuffer->Read(true); return (uint) ReduceSum(m_PartialResult); }
double Statistics::MeanSqr(Image& Source) { Check1Channel(Source); PrepareBuffer(Source); Kernel(reduce_mean_sqr, In(Source), Out(), *m_PartialResultBuffer, Source.Step(), Source.Width(), Source.Height()); m_PartialResultBuffer->Read(true); return ReduceMean(m_PartialResult); }
void GenmeshAnimationPDL::Prepare () { if (prepared) return; prepared = true; csRef<iEngine> engine = csQueryRegistry<iEngine> (factory->type->object_reg); if (!engine) { factory->type->Report (CS_REPORTER_SEVERITY_ERROR, "No iEngine!"); return; } for (size_t b = 0; b < factory->buffers.GetSize(); b++) { if (factory->buffers[b].name == factory->type->colorsID) PrepareBuffer (engine, factory->buffers[b], colorsBuffer); else { ColorBuffer& buffer = buffers.GetExtend (buffers.GetSize ()); PrepareBuffer (engine, factory->buffers[b], buffer); } } buffers.ShrinkBestFit (); }
void String::Insert(unsigned long at,const wchar_t* buffer) { ASSERT(at <= m_Length); ASSERT(buffer); ASSERT(buffer != m_Buffer); unsigned long length = wcslen(buffer); PrepareBuffer(m_Length + 1 + length,true); MoveMemory(m_Buffer + at + length,m_Buffer + at,(m_Length + 1 - at) * sizeof(wchar_t)); CopyMemory(m_Buffer + at,buffer,length * sizeof(wchar_t)); m_Length += length; }
bool String::SetBuffer(const wchar_t* buffer) { ASSERT(buffer); ASSERT(buffer != m_Buffer); unsigned long length = wcslen(buffer); if(!PrepareBuffer(length + 1,false)) return false; CopyMemory(m_Buffer,buffer,(length + 1) * sizeof(wchar_t)); m_Length = length; return true; }
void String::Insert(unsigned int at,const char* buffer,unsigned int length) { ASSERT(at <= m_Length); ASSERT(buffer); ASSERT(buffer != m_Buffer); if(length == UINT_MAX) length = (unsigned int)strlen(buffer); PrepareBuffer(m_Length + 1 + length,true); MoveMemory(m_Buffer + at + length,m_Buffer + at,m_Length + 1 - at); CopyMemory(m_Buffer + at,buffer,length); m_Length += length; }
void ReportDetailed(CHAIN **Chain, int NChain, FILE *Out, COMMAND *Cmd) { register int i, Cn; RESIDUE *p; BUFFER Bf, Tmp, Tmp1; PrepareBuffer(Bf,Chain); Glue(Bf,"REM",Out); sprintf(Tmp,"REM --------------- "); strcat(Tmp,"Detailed secondary structure assignment"); strcat(Tmp,"-------------"); Glue(Bf,Tmp,Out); Glue(Bf,"REM",Out); Glue(Bf,"REM |---Residue---| |--Structure--| |-Phi-| |-Psi-| |-Area-| ",Out); for( Cn=0; Cn<NChain; Cn++ ) { if( !Chain[Cn]->Valid ) continue; for( i=0; i<Chain[Cn]->NRes; i++ ) { p = Chain[Cn]->Rsd[i]; sprintf(Tmp,"ASG %3s %c %4s %4d %c %11s %7.2f %7.2f %7.1f", p->ResType,SpaceToDash(Chain[Cn]->Id),p->PDB_ResNumb,i+1, p->Prop->Asn,Translate(p->Prop->Asn),p->Prop->Phi, p->Prop->Psi,p->Prop->Solv); if( Cmd->BrookhavenAsn ) { Tmp[26] = p->Prop->PdbAsn; Tmp[25] = ' '; Tmp[27] = ' '; } if( Cmd->DsspAsn ) { Tmp[28] = p->Prop->DsspAsn; Tmp[27] = ' '; Tmp[29] = ' '; sprintf(Tmp1," %6.1f ",p->Prop->DsspSolv); strcat(Tmp,Tmp1); } Glue(Bf,Tmp,Out); } } }
void ReportShort(CHAIN **Chain, int NChain, FILE *Out, COMMAND *Cmd) { register int Cn, i; BUFFER Bf, Tmp; char *Asn; static char *StrTypes = "HGIE"; int Bound[MAX_ASSIGN][2], NStr; if( !ExistsSecStr(Chain,NChain) ) return; PrepareBuffer(Bf,Chain); Glue(Bf,"REM",Out); Glue(Bf,"REM",Out); Glue(Bf,"REM",Out); for( ; *StrTypes!= '\0'; StrTypes++ ) { for( Cn=0; Cn<NChain; Cn++ ) { if( !Chain[Cn]->Valid ) continue; Asn = (char *)ckalloc(Chain[Cn]->NRes*sizeof(char)); ExtractAsn(Chain,Cn,Asn); NStr = Boundaries(Asn,Chain[Cn]->NRes,(*StrTypes),Bound); for( i=0; i<NStr; i++ ) { sprintf(Tmp,"LOC %-10s %3s %4s %c %3s %4s %c",Translate(*StrTypes), Chain[Cn]->Rsd[Bound[i][0]]->ResType, Chain[Cn]->Rsd[Bound[i][0]]->PDB_ResNumb, SpaceToDash(Chain[Cn]->Id), Chain[Cn]->Rsd[Bound[i][1]]->ResType, Chain[Cn]->Rsd[Bound[i][1]]->PDB_ResNumb, SpaceToDash(Chain[Cn]->Id)); Glue(Bf,Tmp,Out); } free(Asn); } } }
bool String::SetBuffer(const char* buffer,unsigned int length) { ASSERT(buffer); ASSERT(buffer != m_Buffer); if(length == UINT_MAX) length = (unsigned int)strlen(buffer); if(!PrepareBuffer(length + 1,false)) return false; CopyMemory(m_Buffer,buffer,length); m_Buffer[length] = 0; m_Length = length; return true; }
void Statistics::PrepareCoords(const ImageBase& Source) { PrepareBuffer(Source); size_t NbGroups = (size_t) GetNbGroups(Source); // We are storing X and Y size_t BufferSize = NbGroups * 2; if (m_PartialCoordBuffer != nullptr && m_PartialCoordBuffer->Size() == BufferSize * sizeof(int) && m_PartialCoord.size() == BufferSize) { return; } m_PartialCoord.assign(BufferSize, 0); m_PartialCoordBuffer.reset(); m_PartialCoordBuffer = make_shared<Buffer>(*m_CL, m_PartialCoord.data(), BufferSize); }
void ReportSSBonds(CHAIN **Chain, FILE *Out) { register int i; BUFFER Bf, Tmp; SSBOND *s; if( !Chain[0]->NBond ) return; PrepareBuffer(Bf,Chain); for( i=0; i<Chain[0]->NBond; i++ ) { s = Chain[0]->SSbond[i]; sprintf(Tmp,"LOC Disulfide CYS %4s %c CYS %4s %c ", s->PDB_ResNumb1,SpaceToDash(s->ChainId1), s->PDB_ResNumb2,SpaceToDash(s->ChainId2)); if( s->AsnSource == Pdb ) strcat(Tmp," PDB"); else strcat(Tmp,"STRIDE\n"); Glue(Bf,Tmp,Out); } }
void Rasterizer::Prepare() { // Sort for (GalaxyInstance* gi : m_galaxies) gi->setPosition(gi->position() - m_renderingParams->camera().camera()); qSort(m_galaxies.begin(), m_galaxies.end(), galaxySort); for (GalaxyInstance* gi : m_galaxies) { // qDebug() << gi->position().length(); gi->setPosition(gi->position() + m_renderingParams->camera().camera()); } // Done sorting for (GalaxyInstance* gi : m_galaxies) { gi->GetGalaxy()->galaxyParams().setNoise(m_noise); gi->GetGalaxy()->SetupComponents(m_renderingParams); } PrepareBuffer(); PrepareRenderList(); m_renderingParams->camera().setupViewmatrix(); }
BOOL COutput::Open(int nChannels, int nSamplingRate, int nBitsPerSample) { MMRESULT mmr; int i, nCount = 0; CAutoLock lock(&m_csecDevice); if (!waveOutGetNumDevs()) goto fail; if (nChannels == m_pcm.wf.nChannels && (int)m_pcm.wf.nSamplesPerSec == nSamplingRate && m_pcm.wBitsPerSample == nBitsPerSample) return TRUE; CloseAll(); m_cbBuf = BUFLEN_BASE; if (nSamplingRate > 11025) m_cbBuf *= 2; if (nSamplingRate > 22050) m_cbBuf *= 2; if (nChannels > 1) m_cbBuf *= 2; if (nBitsPerSample > 8) m_cbBuf *= 2; m_pcm.wf.wFormatTag = WAVE_FORMAT_PCM; m_pcm.wf.nChannels = nChannels; m_pcm.wf.nSamplesPerSec = nSamplingRate; m_pcm.wf.nAvgBytesPerSec = nBitsPerSample * nSamplingRate * nChannels / 8; m_pcm.wf.nBlockAlign = nBitsPerSample * nChannels / 8; m_pcm.wBitsPerSample = nBitsPerSample; // デバイスがオープンできるまで再試行する for (i = 0; i < 10; i++) { if (m_fDoubleBuf) mmr = waveOutOpen(&m_hwo, WAVE_MAPPER, (LPWAVEFORMATEX)&m_pcm, (DWORD)WaveOutCallback2, 0, CALLBACK_FUNCTION); else mmr = waveOutOpen(&m_hwo, WAVE_MAPPER, (LPWAVEFORMATEX)&m_pcm, (DWORD)WaveOutCallback, 0, CALLBACK_FUNCTION); if (mmr == MMSYSERR_NOERROR) break; else if (mmr != MMSYSERR_ALLOCATED) goto fail; Sleep(100); } m_fPaused = FALSE; m_dwWritten = 0; if (!PrepareBuffer()) goto fail; if (m_fDoubleBuf && !PrepareSubBuffer()) goto fail; m_nLPeek = 0; m_nRPeek = 0; if (m_fFade) { m_nFadeCurrent = FADE_BASE << FADE_BITS; m_nFadeSamples = m_pcm.wf.nSamplesPerSec * FADE_TIME / 1000; m_nFadeRate = (int)((((double)1 - FADE_BASE) / m_nFadeSamples) * (1 << FADE_BITS)); m_nFadeRate += 1; } return TRUE; fail: CloseAll(); return FALSE; }
void Window::Create(){ if(true){ WNDCLASSEX wcex; /* register window class */ wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_OWNDC; wcex.lpfnWndProc = WindowProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = GlobalInstanceHandle; wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wcex.lpszMenuName = NULL; wcex.lpszClassName = "Cell_Engine_Window"; wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);; if (!RegisterClassEx(&wcex)){ //exit(0); } } /* create main window */ ConsoleEcho("Window Création"); WindowHandler= CreateWindowEx(0, "Cell_Engine_Window", Title, WS_TILEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, width, height, NULL, NULL, GlobalInstanceHandle, NULL); PIXELFORMATDESCRIPTOR pfd; int iFormat; /* get the device context (DC) */ DeviceContext = GetDC(WindowHandler); /* set the pixel format for the DC */ ZeroMemory(&pfd, sizeof(pfd)); pfd.nSize = sizeof(pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; iFormat = ChoosePixelFormat(DeviceContext, &pfd); SetPixelFormat(DeviceContext, iFormat, &pfd); /* create and enable the render context (RC) */ GLRenderingContext= wglCreateContext(DeviceContext); SharedRenderContext=wglCreateContext(DeviceContext); UserSharedRenderContext=wglCreateContext(DeviceContext); if(SharedRenderContext==NULL){ DWORD errorCode=GetLastError(); LPVOID lpMsgBuf; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf, 0, NULL); MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); LocalFree(lpMsgBuf);exit(125); } bool Error=true; Error=wglShareLists(GLRenderingContext,SharedRenderContext); Error=wglShareLists(GLRenderingContext,SharedRenderContext); if(Error==false){ConsoleEcho("Error dans Share List");exit(122);} ConsoleEcho("ContextCrétaion"); Error=wglMakeCurrent(DeviceContext,SharedRenderContext); if(Error==false){ NoticeError(); } wglMakeCurrent(DeviceContext,GLRenderingContext); Context_Initied=true; //wglShareLists(GLobalHGLRC,GLRenderingContext); glewInit(); ConsoleEcho("Device getting"); GetDeviceMode(); ConsoleEcho("FrameRate Upd"); if(FrameRate==0){DeviceMode.dmDisplayFrequency=(FrameRateList.back()); FrameRate=(FrameRateList.back()); }else{DeviceMode.dmDisplayFrequency=FrameRate; } ConsoleEcho("device upd"); UpdateDeviceMode(); RenderWidth=width; RenderHeight=height; ShowWindow(WindowHandler, SW_SHOW); Created=true; GetRendererInfo(); ConsoleEcho("Buffer"); #if defined(DEBUG_MODE) DefineGLDebugCallback(); #endif // defined if(MSAA_Sample>0){ PrepareSamplingBuffer(MSAA_Sample); }else{ MSAA_Sample=0; PrepareBuffer(); } glViewport(0,0,RenderWidth,RenderHeight); test=5; //glEnable(GL_DEPTH_TEST); VSyncState(true); CreatePipeline(); SetEvent(ThreadStart); }
void ReportHydrBonds(CHAIN **Chain, int NChain, HBOND **HBond, FILE *Out, COMMAND *Cmd) { register int i, k, Cn; int Cnt, Res; BUFFER Bf, Tmp, Tmp1; HBOND *p; RESIDUE *r; PrepareBuffer(Bf,Chain); Glue(Bf,"REM",Out); sprintf(Tmp,"REM ------------------ "); strcat(Tmp,"Mainchain hydrogen bonds"); strcat(Tmp," ------------------------"); Glue(Bf,Tmp,Out); Glue(Bf,"REM",Out); Glue(Bf,"REM Definition of Stickle et al., J.Mol.Biol. 226:1143-1159, 1992",Out); Glue(Bf,"REM A1 is the angle between the planes of donor complex and O..N-C",Out); Glue(Bf,"REM A2 is the angle between the planes of acceptor complex and N..O=C",Out); Glue(Bf,"REM",Out); sprintf(Tmp,"HBT %-6d",Chain[0]->NHydrBondTotal); Glue(Bf,Tmp,Out); sprintf(Tmp,"HBI %-6d",Chain[0]->NHydrBondInterchain); Glue(Bf,Tmp,Out); for( Cn=0; Cn<NChain; Cn++ ) if( Chain[Cn]->Valid ) { sprintf(Tmp,"HBC %-6d %s %c %4d", Chain[Cn]->NHydrBond,Chain[Cn]->File,SpaceToDash(Chain[Cn]->Id),Chain[Cn]->NRes); Glue(Bf,Tmp,Out); } Glue(Bf,"REM",Out); Glue(Bf,"REM |--Residue 1--| |--Residue 2--| N-O N..O=C O..N-C A1 A2",Out); for( Cn=0; Cn<NChain; Cn++ ) { if( !Chain[Cn]->Valid ) continue; for( i=0; i<Chain[Cn]->NRes; i++ ) { r = Chain[Cn]->Rsd[i]; Cnt = 0; for( k=0; k<r->Inv->NBondDnr; k++ ) { p = HBond[r->Inv->HBondDnr[k]]; if( p->ExistHydrBondRose ) { Res = p->Acc->A_Res; sprintf(Tmp,"DNR %4s %c %4s %4d -> ", r->ResType,SpaceToDash(Chain[Cn]->Id),r->PDB_ResNumb,i); sprintf(Tmp1,"%4s %c %4s %4d %4.1f %6.1f %6.1f %6.1f %6.1f ", p->Acc->Chain->Rsd[Res]->ResType, /* patch replace SpaceToDash(Chain[Cn]->Id), */ SpaceToDash(p->Acc->Chain->Id), p->Acc->Chain->Rsd[Res]->PDB_ResNumb,Res,p->AccDonDist,p->AccAng, p->DonAng,p->AccDonAng,p->DonAccAng); strcat(Tmp,Tmp1); Glue(Bf,Tmp,Out); Cnt++; } } Cnt = 0; for( k=0; k<r->Inv->NBondAcc; k++ ) { p = HBond[r->Inv->HBondAcc[k]]; if( p->ExistHydrBondRose ) { Res = p->Dnr->D_Res; sprintf(Tmp,"ACC %4s %c %4s %4d -> ", r->ResType,SpaceToDash(Chain[Cn]->Id),r->PDB_ResNumb,i); sprintf(Tmp1,"%4s %c %4s %4d %4.1f %6.1f %6.1f %6.1f %6.1f ", p->Dnr->Chain->Rsd[Res]->ResType, /* patch replace SpaceToDash(Chain[Cn]->Id), */ SpaceToDash(p->Dnr->Chain->Id), p->Dnr->Chain->Rsd[Res]->PDB_ResNumb,Res,p->AccDonDist, p->AccAng,p->DonAng,p->AccDonAng,p->DonAccAng); strcat(Tmp,Tmp1); Glue(Bf,Tmp,Out); Cnt++; } } } } }
void ReportSummary(CHAIN **Chain, int NChain, FILE *Out, COMMAND *Cmd) { int Cn, Width, CurrWidth, NBlocks, Tail, i, j, From, To; BUFFER Bf, Tmp, Tmp1; PrepareBuffer(Bf,Chain); sprintf(Tmp,"REM -------------------- "); strcat(Tmp,"Secondary structure summary"); strcat(Tmp," -------------------"); Glue(Bf,Tmp,Out); for( Cn=0; Cn<NChain; Cn++ ) { if( !Chain[Cn]->Valid ) continue; Width = 50; Glue(Bf,"REM",Out); strncpy(Tmp1,Chain[Cn]->File,40); Tmp1[40] = '\0'; sprintf(Tmp,"CHN %s %c",Tmp1,SpaceToDash(Chain[Cn]->Id)); Glue(Bf,Tmp,Out); NBlocks = Chain[Cn]->NRes/Width; Tail = Chain[Cn]->NRes % Width; if( Tail ) NBlocks++; for( i=0; i<NBlocks; i++ ) { Glue(Bf,"REM",Out); From = i*Width; if( i == NBlocks-1 && Tail ) CurrWidth = Tail; else CurrWidth = Width; To = From+CurrWidth; sprintf(Tmp,"REM "); for( j=0; j<CurrWidth; j++ ) if( j && (j+1)%10 == 0 ) strcat(Tmp,"."); else strcat(Tmp," "); Glue(Bf,Tmp,Out); sprintf(Tmp,"SEQ %-4d ",From+1); for( j=From; j<From+Width; j++ ) { if( j < To ) sprintf(Tmp1,"%c",ThreeToOne(Chain[Cn]->Rsd[j]->ResType)); else sprintf(Tmp1," "); strcat(Tmp,Tmp1); } sprintf(Tmp1," %4d",To); strcat(Tmp,Tmp1); Glue(Bf,Tmp,Out); sprintf(Tmp,"STR "); for( j=From; j<To; j++ ) { if( Chain[Cn]->Rsd[j]->Prop->Asn == 'C' ) sprintf(Tmp1," "); else sprintf(Tmp1,"%c",Chain[Cn]->Rsd[j]->Prop->Asn); strcat(Tmp,Tmp1); } strcat(Tmp," "); Glue(Bf,Tmp,Out); } } }