FreeburnTrack.cpp
上传用户:cnxinhai
上传日期:2013-08-06
资源大小:265k
文件大小:6k
源码类别:

DVD

开发平台:

Visual C++

  1. /* The Track class for FreeBurn.  This class is used
  2.  * to represent the basic track structure in FreeBurn.
  3.  * 
  4.  * Copyright (C) 2001, 2002 Adam Schlag
  5.  */
  6. /*
  7.  * FreeBurn Software License
  8.  * (based on the Apache Software License)
  9.  * 
  10.  * Version 1.1
  11.  * 
  12.  * Copyright (c) 2001, 2002 The FreeBurn Project. All rights reserved.
  13.  * 
  14.  * Redistribution and use in source and binary forms, with or without 
  15.  * modification, are permitted provided that the following conditions are met:
  16.  * 
  17.  * 1. Redistributions of source code must retain the above copyright 
  18.  * notice, this list of conditions and the following disclaimer.
  19.  * 
  20.  * 2. Redistributions in binary form must reproduce the above copyright 
  21.  * notice, this list of conditions and the following disclaimer in the 
  22.  * documentation and/or other materials provided with the distribution.
  23.  * 
  24.  * 3. The end-user documentation included with the redistribution, if any, must 
  25.  * include the following acknowledgment:
  26.  * 
  27.  *  "This product includes software developed by the FreeBurn 
  28.  *     Project (http://freeburn.sourceforge.net/)."
  29.  * 
  30.  * Alternately, this acknowledgment may appear in the software itself, 
  31.  * if and wherever such third-party acknowledgments normally appear.
  32.  * 
  33.  * 4. The names "FreeBurn" and "FreeBurn Project" must not be 
  34.  * used to endorse or promote products derived from this software 
  35.  * without prior written permission. For written permission, please 
  36.  * contact aschlag@users.sourceforge.net.
  37.  * 
  38.  * 5. Products derived from this software may not be called "FreeBurn", 
  39.  * nor may "FreeBurn" appear in their name, without prior written 
  40.  * permission of the FreeBurn Project.
  41.  * 
  42.  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED 
  43.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
  44.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
  45.  * DISCLAIMED. IN NO EVENT SHALL THE FREEBURN PROJECT OR ITS 
  46.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
  47.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
  48.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
  49.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
  50.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
  51.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
  52.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
  53.  * SUCH DAMAGE.
  54.  * 
  55.  * This software consists of voluntary contributions made by many 
  56.  * individuals on behalf of the FreeBurn Project. For more 
  57.  * information on the FreeBurn Project and FreeBurn, please see 
  58.  * <http://freeburn.sourceforge.net/>.
  59.  * 
  60.  * This software is distributed with software that is released under the GNU 
  61.  * General Public License (GPL).  You can find the terms of this license in the
  62.  * file GPL.txt distributed in this package.  You can find information on the
  63.  * software distributed with this package in the file PROGRAMS.txt.
  64.  */
  65.  
  66. // The main FOX include file
  67. #include <fx.h>
  68. // the main freeburn definition class and additional
  69. // helper and gui classes go here
  70. #include "FreeburnDefs.h"
  71. #include "FreeburnTrack.h"
  72. // class constructor
  73. CFreeburnTrack::CFreeburnTrack(FXint trackMode, FXint copyProperties, FXint preEmphProperties, 
  74.     FXbool twoChannelAudio, FXbool fourChannelAudio, FXint initialDataArraySize)
  75. {
  76.     // initialize the class variables to something to make
  77.     // the class useable right from the start
  78.     
  79.     // Set up the track mode, with a switch statement.  If there isn't
  80.     // a valid value, the defualt case will execute and we'll initialize 
  81.     // it to 0 (AUDIO).
  82.     switch(trackMode)
  83.     {
  84.         case AUDIO:
  85.             m_trackMode = AUDIO;
  86.             break;
  87.         case MODE_1:
  88.             m_trackMode = MODE_1;
  89.             break;
  90.         case MODE_1_RAW:
  91.             m_trackMode = MODE_1_RAW;
  92.             break;
  93.         case MODE_2_FORM_1:
  94.             m_trackMode = MODE_2_FORM_1;
  95.             break;
  96.         case MODE_2_FORM_2:
  97.             m_trackMode = MODE_2_FORM_2;
  98.             break;
  99.         case MODE_2_RAW:
  100.             m_trackMode = MODE_2_RAW;
  101.             break;
  102.         default:
  103.             m_trackMode = AUDIO;
  104.             break;
  105.     }
  106.        
  107.     // set up the copy properties, first checking for a good number.
  108.     // by default we will set it to COPY.
  109.     switch(copyProperties)
  110.     {
  111.         case COPY:
  112.             m_trackCopyProperties = COPY;
  113.             break;
  114.         case NO_COPY:
  115.             m_trackCopyProperties = NO_COPY;
  116.             break;
  117.         default:
  118.             m_trackCopyProperties = COPY;
  119.             break;
  120.     }
  121.     
  122.     // set up the pre-emphasis properties, first checking for a good number.
  123.     // by default we will set it to NO_PRE_EMPHASIS.
  124.     switch(preEmphProperties)
  125.     {
  126.         case NO_PRE_EMPHASIS:
  127.             m_trackPreEmphasisProperties = NO_PRE_EMPHASIS;
  128.             break;
  129.         case PRE_EMPHASIS:
  130.             m_trackPreEmphasisProperties = PRE_EMPHASIS;
  131.             break;
  132.         default:
  133.             m_trackPreEmphasisProperties = NO_PRE_EMPHASIS;
  134.             break;
  135.     }
  136.     
  137.     // set up the two and four channel audio properties
  138.     m_trackTwoChannelAudio  = twoChannelAudio;
  139.     m_trackFourChannelAudio = fourChannelAudio;
  140.     
  141.     // initialize the track CD Text, and the default map number
  142.     m_trackCdText = new CdTextTrack;
  143.     m_trackCdText->map_number = 0;
  144.     
  145.     // set up the track data array and its length and index
  146.     m_trackDataArray          = new TrackDataStruct[initialDataArraySize];
  147.     m_trackDataArrayLength    = initialDataArraySize;
  148.     m_trackDataArrayIndex     = 0;
  149.     m_trackDataArrayLastIndex = 0;
  150. }
  151.     
  152. // class destructor
  153. CFreeburnTrack::~CFreeburnTrack()
  154. {
  155.     // delete dynamic class variables
  156.     
  157.     delete[] m_trackDataArray;
  158.     
  159.     delete m_trackCdText;
  160. }