/********************************************************************/ /* Copyright (c) 2017 System fugen G.K. and Yuzi Mizuno */ /* All rights reserved. */ /********************************************************************/ // SnapAttrib.cpp: MGSnapAttrib クラスのインプリメンテーション // ////////////////////////////////////////////////////////////////////// #include "MGCLStdAfx.h" #include "mgGL/SnapAttrib.h" #include "mg/Ifstream.h" #include "mg/Ofstream.h" #if defined(_DEBUG) #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ////////////////////////////////////////////////////////////////////// // 構築/消滅 ////////////////////////////////////////////////////////////////////// /* enum{ BIT_END=0, BIT_KNOT=1, BIT_NEAR=2, BIT_VERTEX=3, BIT_CENTER=4, BIT_GRID=5, //BIT_ANGLE=6 }; */ MGSnapAttrib::MGSnapAttrib() :m_bitset(){ m_dSnapAperture[0]=7.; m_dSnapAperture[1]=7.; } MGSnapAttrib::MGSnapAttrib( float apx, float apy, bool bEnd, bool bKnot, bool bNear, bool bVertex, bool bCenter, bool bGrid//, bool bAngle ):m_bitset(){ m_dSnapAperture[0]=apx; m_dSnapAperture[1]=apy; m_bitset[BIT_END] = bEnd; m_bitset[BIT_KNOT] = bKnot; m_bitset[BIT_NEAR] = bNear; m_bitset[BIT_VERTEX] = bVertex; m_bitset[BIT_CENTER] = bCenter; m_bitset[BIT_GRID] = bGrid; //m_bitset[BIT_ANGLE] = bAngle; } MGSnapAttrib::MGSnapAttrib( float apx, float apy, const std::bitset<32>& bits ):m_bitset(bits){ m_dSnapAperture[0]=apx; m_dSnapAperture[1]=apy; } //MGSnapAttrib::~MGSnapAttrib(){;} //Text output to stream. std::ostream& operator<< (std::ostream& ostrm, const MGSnapAttrib& atr){ ostrm<<"SnapAttrib::" << "End=" << atr.m_bitset[0] ; ostrm<< ", Knot=" << atr.m_bitset[1] << ", Near=" << atr.m_bitset[2]; ostrm<< ", Vertex=" << atr.m_bitset[3] << ", Center=" << atr.m_bitset[4]; ostrm<< ", Grid=" << atr.m_bitset[5] ;//<< ", Ortho=" << atr.m_bitset[6]; ostrm<<", Aperture=("<< atr.m_dSnapAperture[0]<<","<< atr.m_dSnapAperture[1]<<")"; return ostrm; } // Serialization. MGOfstream& operator<< (MGOfstream& buf, const MGSnapAttrib& atr) { buf << atr.m_bitset.to_ulong(); buf << atr.m_dSnapAperture[0]; buf << atr.m_dSnapAperture[1]; return buf; } MGIfstream& operator>> (MGIfstream& buf, MGSnapAttrib& atr) { long lbit; buf >> lbit; atr.m_bitset = std::bitset<32>(lbit); buf >> atr.m_dSnapAperture[0]; buf >> atr.m_dSnapAperture[1]; return buf; }