|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 9974 (0x26f6) Types: TextFile Names: »ibshaper.c«
└─⟦8648bda34⟧ Bits:30007244 EUUGD5_II: X11R5 └─⟦87c3ac0e0⟧ »./contrib-3/contrib-3.00« └─⟦de8ce1454⟧ └─⟦this⟧ »contrib/lib/iv/src/bin/ibuild/ibshaper.c«
/* * Copyright (c) 1991 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of Stanford not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. Stanford makes no representations about * the suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * Implementation of Shaper component and derived classes. * $Header: /master/3.0/iv/src/bin/ibuild/RCS/ibshaper.c,v 1.2 91/09/27 14:11:42 tang Exp $ */ #include "ibclasses.h" #include "ibshaper.h" #include "ibvars.h" #include <Unidraw/ulist.h> #include <string.h> #include <stream.h> /*****************************************************************************/ ShaperComp::ShaperComp () { GetClassNameVar()->SetName("Shaper"); GetClassNameVar()->SetBaseClass("Shaper"); IBShape* ibshape = GetShapeVar()->GetShape(); ibshape->hnat = ibshape->hstr = ibshape->hshr = true; ibshape->vnat = ibshape->vstr = ibshape->vshr = true; _lock = false; } void ShaperComp::Reconfig () { InteractorComp* kid = GetKid(); if (kid != nil) { kid->Reconfig(); if (!_lock) { _lock = true; *GetShapeVar() = *kid->GetShapeVar(); } } } void ShaperComp::Read (istream& in) { MonoSceneComp::Read(in); in >> _lock; } void ShaperComp::Write(ostream& out) { MonoSceneComp::Write(out); out << _lock << " "; } ClassId ShaperComp::GetClassId () { return SHAPER_COMP; } boolean ShaperComp::IsA (ClassId id) { return SHAPER_COMP==id || MonoSceneComp::IsA(id); } /*****************************************************************************/ ClassId ShaperCode::GetClassId () { return SHAPER_CODE; } boolean ShaperCode::IsA (ClassId id) { return SHAPER_CODE ==id || MonoSceneCode::IsA(id); } ShaperCode::ShaperCode (ShaperComp* subj) : MonoSceneCode(subj) { } ShaperComp* ShaperCode::GetShaperComp () { return (ShaperComp*) GetSubject(); } boolean ShaperCode::Definition (ostream& out) { boolean ok = true; char coreclass[CHARBUFSIZE]; ShaperComp* shcomp = GetShaperComp(); SubclassNameVar* snamer = shcomp->GetClassNameVar(); MemberNameVar* mnamer = shcomp->GetMemberNameVar(); const char* subclass = snamer->GetName(); const char* mname = mnamer->GetName(); GetCoreClassName(coreclass); CodeView* kview = GetKidView(); if (_emitInstanceDecls) { if (!snamer->IsSubclass()) { if (_emitExport) { if (mnamer->GetExport()) { out << " MonoScene* " << mname << ";\n"; } } else { if (!mnamer->GetExport() || _emitMain) { out << " " << subclass << "* " << mname << ";\n"; } } } else { ok = ok && CodeView::Definition(out); } if (kview != nil) { ok = ok && kview->Definition(out); } } else if (_emitForward) { if (!snamer->IsSubclass()) { if (_scope) { if (!_namelist->Search("MonoScene") && mnamer->GetExport()) { _namelist->Append("MonoScene"); out << "class MonoScene;\n"; } } } else { ok = ok && CodeView::Definition(out); } if (kview != nil) { ok = ok && kview->Definition(out); } } else if (_emitExpHeader) { if (!snamer->IsSubclass()) { if (_scope && mnamer->GetExport()&&!_namelist->Search("scene")) { _namelist->Append("scene"); out << "#include <InterViews/scene.h>\n"; } } else { ok = ok && CodeView::Definition(out); } if (kview != nil) { ok = ok && kview->Definition(out); } } else if (_emitHeaders || _emitProperty || _emitClassHeaders) { ok = ok && CodeView::Definition(out); if (kview != nil) { ok = ok && kview->Definition(out); } } else if (_emitCorehHeader) { if (snamer->IsSubclass() && strcmp(subclass, _classname) == 0) { if (!_namelist->Search("scene")) { _namelist->Append("scene"); out << "#include <InterViews/scene.h>\n"; } } else { if (kview != nil) { ok = ok && kview->Definition(out); } } } else if (_emitInstanceInits) { Shape* shape = shcomp->GetShapeVar()->GetShape(); if (!_instancelist->Find((void*)mname)) { _instancelist->Append(new UList((void*)mname)); char coreclass[CHARBUFSIZE]; char ShaperClass[CHARBUFSIZE]; GetCoreClassName(coreclass); strcpy(ShaperClass, coreclass); strcat(ShaperClass, "_Shaper"); if (snamer->IsSubclass()) { BeginInstantiate(out); out << "("; } else { if (mnamer->GetExport() && !_emitMain) { out << " " << mname << " = new " << ShaperClass; out << "("; } else { out << " " << ShaperClass << "* "; out << mname << " = new " << ShaperClass << "("; } } InstanceName(out); out << shape->width << ", " << shape->height << ", "; out << shape->hstretch << ", " << shape->vstretch << ", "; out << shape->hshrink << ", " << shape->vshrink << ")"; EndInstantiate(out); } if (kview != nil) { ok = kview->Definition(out) && ok; } if (AllKidsDefined() && !_lock) { _lock = true; InteractorComp* kid = shcomp->GetKid(); const char* instance = kid->GetMemberNameVar()->GetName(); out << " " << mname << "->Insert("; out << instance << ");\n"; } } else if ( _emitBSDecls || _emitBSInits || _emitFunctionDecls || _emitFunctionInits ) { if (kview != nil) { ok = ok && kview->Definition(out); } } else if (_emitCoreDecls) { if ( strcmp(subclass, _classname) == 0 && !_globallist->Search(_classname) ) { _globallist->Append(_classname); out << "class " << coreclass; out << " : public MonoScene {\n"; out << "public:\n"; out << " " << coreclass; out << "(const char*, int, int, int, int, int, int);\n\n"; out << " virtual void Reconfig();\n"; out << "private:\n"; out << " int _h, _v;\n"; out << " int _hstr, _vstr;\n"; out << " int _hshr, _vshr;\n"; out << "};\n\n"; } if (kview != nil) { ok = ok && kview->Definition(out); } } else if ( _emitCoreInits || _emitClassDecls || _emitClassInits ) { ok = ok && CodeView::Definition(out); if (kview != nil) { ok = ok && kview->Definition(out); } } else if (_emitMain) { ok = ok && CodeView::Definition(out); } return out.good() && ok; } boolean ShaperCode::CoreConstInits(ostream& out) { InteractorComp* icomp = GetIntComp(); SubclassNameVar* snamer = icomp->GetClassNameVar(); char coreclass[CHARBUFSIZE]; GetCoreClassName(coreclass); out << "(\n const char* name, int h, int v, "; out << "int hstr, int vstr, int hshr, int vshr\n) {\n"; out << " perspective = new Perspective;\n"; out << " SetInstance(name);\n"; out << " _h = h, _v = v;\n"; out << " _hstr = hstr, _vstr = vstr;\n"; out << " _hshr = hshr, _vshr = vshr;\n"; out << "}\n\n"; out << "void " << coreclass << "::Reconfig () {\n"; out << " MonoScene::Reconfig();\n"; out << " shape->width = _h;\n"; out << " shape->height = _v;\n"; out << " shape->hstretch = _hstr;\n"; out << " shape->vstretch = _vstr;\n"; out << " shape->hshrink = _hshr;\n"; out << " shape->vshrink = _vshr;\n"; out << "}\n\n"; return out.good(); } boolean ShaperCode::ConstDecls(ostream& out) { out << "(const char*, int, int, int, int, int, int);\n"; return out.good(); } boolean ShaperCode::ConstInits(ostream& out) { char coreclass[CHARBUFSIZE]; GetCoreClassName(coreclass); out << "(\n const char* name, int h, int v, "; out << "int hstr, int vstr, int hshr, int vshr\n) : " << coreclass; out << "(name, h, v, hstr, vstr, hshr, vshr) {}\n\n"; return out.good(); } boolean ShaperCode::EmitIncludeHeaders(ostream& out) { SubclassNameVar* snamer = GetIntComp()->GetClassNameVar(); if (!snamer->IsSubclass() && !_namelist->Search("scene")) { _namelist->Append("scene"); out << "#include <InterViews/scene.h> \n"; } if (!_namelist->Search("shape")) { _namelist->Append("shape"); out << "#include <InterViews/shape.h> \n"; } return out.good(); }